使用正则表达式匹配动态字符串

Far*_*han 10 javascript regex

我正在尝试检测字符串中出现的字符串.但是下面的代码总是返回"null".显然出了问题,但由于我是新手,我无法发现它.我期待代码返回"true"而不是"null"

var searchStr = 'width'; 
var strRegExPattern = '/'+searchStr+'\b/'; 
"32:width: 900px;".match(new RegExp(strRegExPattern,'g'));
Run Code Online (Sandbox Code Playgroud)

YOU*_*YOU 20

在RegExp选项中传递字符串时,请不要输入'/'

以下会没事的

var strRegExPattern = '\\b'+searchStr+'\\b'; 
"32:width: 900px;".match(new RegExp(strRegExPattern,'g'));
Run Code Online (Sandbox Code Playgroud)


Ala*_*ore 6

您混淆了在 JavaScript 中创建正则表达式的两种方法。如果您使用正则表达式文字,/则 是 正则表达式分隔符,g修饰符紧跟在结束分隔符之后,并且\b是字边界的转义序列:

var regex = /width\b/g;
Run Code Online (Sandbox Code Playgroud)

如果您以 RegExp 构造函数的字符串文字形式创建它,则可以省略正则表达式分隔符,以第二个字符串参数的形式传递修饰符,并且必须在正则表达式转义序列中使用双反斜杠:

var regex = new RegExp('width\\b', 'g');
Run Code Online (Sandbox Code Playgroud)

按照您的方式,\b在到达正则表达式编译器之前将其转换为退格字符;你必须转义反斜杠才能让它通过 JavaScript 的字符串转义序列处理。或者使用正则表达式文字。