0

我需要检查字符串中的类名。

我的字符串如下所示:

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

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

谢谢!

4

2 回答 2

2

你需要\\s. \s在字符串内部会转义s不需要转义的"s". 即,当您使用文字正则表达式时,反斜杠会转义正则表达式字符;并且字符串也使用反斜杠来转义字符串字符。当你从一个字符串构建一个正则表达式时,你需要考虑这两层:\\是字符串逃逸的说法\,然后\s是正则表达式逃逸的说法是空格。

此外,正如其他评论所显示的那样,有更好的方法来测试课堂存在。:) 但我只是回答了直接错误。

于 2013-03-25T00:44:39.813 回答
0

尝试使用这个:

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

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

于 2013-03-25T00:44:55.097 回答