我正在尝试使用以下正则表达式在 javascript 中执行整个单词搜索。
str = "Test String C.S (example)";
var regex_search = new RegExp("\\b"+search_string+"\\b","g");
if(str.match(regex_search)) != null)
match = true;
else
match = false;
如果我搜索像“String”这样的普通字符串,上面的方法效果很好。但如果我只搜索“S”,它会返回 C.S 作为匹配项。另外,搜索 example 返回一个匹配项,但在这种情况下我不需要匹配项,因为它有括号。我只想匹配整个单词。任何建议将不胜感激。
--Edit--
感谢@plalx 澄清了这个例子。
使用捕获组?
.*?\b(S)
调试演示 http://www.debuggex.com/r/lUsQMz382TVLmX0t
我认为你的第二个\b
也破坏了你的代码。
只需更换(S
)与您想要找到的值。
说实话,不太确定你到底要问什么。或者你想找到什么。
edit:
.*?(?:^|\s)(S[^\s$]*).*?
调试演示 http://www.debuggex.com/r/_SZn1oGNEtQCbgiA
你可以取出.*?
为了彻底起见,在正则表达式的开头和结尾将其放在那里。
更换S
在...前面[^\s$]
与您要检查的值。
另外,如果你想在值前面允许更多的东西,你所要做的就是添加一个额外的|"character"
在第一个捕获组中。
例如括号
.*?(?:^|\s|\()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)