我需要检查字符串中的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
问题:
有人能告诉我在我的正则表达式中我做错了吗?
谢谢!
答案 0 :(得分:2)
您需要\\s
。字符串中的\s
将转义s
,它不需要转义,并且只计算"s"
。即当你使用文字正则表达式时,反斜杠会转义正则表达式字符;和字符串也使用反斜杠来转义字符串字符。当你从一个字符串构建一个正则表达式时,你需要考虑这两个层:\\
是字符串 - 逃避说\
的方式,然后\s
是regexp-escapey方式说空白。
正如其他评论所显示的那样,有更好的方法可以测试课程的存在。 :)但我刚回答了直接错误。
答案 1 :(得分:0)
尝试使用:
c = new RegExp('\\b' + classPassed + '\\b');
\b
元字符匹配单词的开头/结尾;它代表边界(如,boudnary一词)。