【问题标题】:Pass variable to RegExp with word boundary将变量传递给带有单词边界的 RegExp
【发布时间】:2012-09-30 17:15:09
【问题描述】:

我必须将变量的值传递给 RegExp 并指向一个单词边界。我有一个要检查的字符串是否包含变量值。 我不知道如何将正则表达式作为变量值和单词边界属性传递给。

所以是这样的:

var sa="Sample";
var re=new RegExp(/\b/+sa);
alert(re.test("Sample text"));

我尝试了一些方法来解决问题,但仍然无法做到:(

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    使用这个:re = new RegExp("\\b" + sa)

    正如@RobW 提到的,您可能需要转义sa

    看到这个:Is there a RegExp.escape function in Javascript?

    【讨论】:

    • eval?听说过RegExp 构造函数吗?
    • 不要忘记转义用户输入 (sa),除非输入也可以是正则表达式。
    【解决方案2】:

    如果您想获取所有匹配项 (g),请不区分大小写 (i),并使用边界以使其不是另一个单词中的单词 (\\b):

    re = new RegExp(`\\b${sa}\\b`, 'gi');
    

    例子:

    let inputString = "I'm John, or johnny, but I prefer john.";
    let swap = "John";
    let re = new RegExp(`\\b${swap}\\b`, 'gi');
    console.log(inputString.replace(re, "Jack")); // I'm Jack, or johnny, but I prefer Jack.
    

    【讨论】:

    • 你的答案是我正在寻找的最接近的答案。您使用的引号是什么,使用${swap} 管道输入变量的文档在哪里@
    • @AlexanderDixon 你问的是template literals吗?
    • element_text.match(new RegExp(matching_option_text, 'gi')) 我想传递带有^$ 开始和结束分隔符的“matching_option_text”变量。
    • 这里更好地表达了我的要求。 stackoverflow.com/q/52047817/5076162
    猜你喜欢
    • 1970-01-01
    • 2012-05-22
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    相关资源
    最近更新 更多