为什么这个正则表达式总是返回null ?

why does this regular expression always return null?

本文关键字:返回 null 正则表达式 为什么      更新时间:2023-09-26

我需要检查字符串中的classname。

我的字符串是这样的:

testing ui-li ui-li-static ui-btn-up-f ui-first-child ui-filter-hidequeue

我正在寻找ui-filter-hidequeue的任何地方(!)在字符串。

这就是我正在尝试的。它总是返回null,尽管我试图匹配的字符串在那里:

var classPassed = 'ui-filter-hidequeue',
    classes = 'testing ui-li ui-li-static ui-btn-up-f ui-first-child ui-filter-hidequeue',
    c = new RegExp('(?:'s|^)' + classPassed + '(?:'s|$)');
console.log( classes.match(c) )   // returns null

问题:
有人能告诉我我在正则表达式中做错了什么吗?

谢谢!

你需要''s。字符串中的's将转义不需要转义的s,而计算结果仅为"s"。例如,当您使用文字regexp时,反斜杠转义regexp字符;字符串也使用反斜杠来转义字符串字符。当您从字符串构建regexp时,需要考虑这两层:''是表示'的字符串escapey方式,然后's是表示空白的regexp-escapey方式。

正如其他注释所示,有更好的方法来测试类的存在。

试试:

c = new RegExp('''b' + classPassed + '''b');

'b元字符匹配单词的开头/结尾;它代表边界(如单词边界)。