我正在尝试检测字符串中出现的字符串.但是下面的代码总是返回"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)
您混淆了在 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 的字符串转义序列处理。或者使用正则表达式文字。
| 归档时间: |
|
| 查看次数: |
18238 次 |
| 最近记录: |