以下正则表达式是错误的 - 有人可以帮助找到所有:-)前面没有“请忽略我”吗? 我之前不需要这样的正则表达式。单词边界可能会混淆事物 感谢
<script type="text/javascript">
function regexTest(string, assert) {
document.write('<hr>')
document.write(string)
document.write("[")
document.write(string.match(/\b((?!please ignore me )\:\-\))\b/gi)!=null);
document.write("]?" + assert);
}
regexTest("1. this is the first string :-) ",true);
regexTest("2. :-)",true)
regexTest("3. another string:-)here",true);
regexTest("4. Ending a sentence with :-)",true);
regexTest("5. please ignore me :-)",false);
</script>
答案 0 :(得分:9)
如果您希望将之前之前的:-)
与“请忽略我”匹配,那么您需要一个负面的背后隐藏(?<!...)
而不是lookahead {{ 1}}。但是,JavaScript不支持lookbehind。
所以你可以做的是匹配(?!...)
然后,如果它匹配,检查捕获组(\bplease ignore me\s*)?:-\)
是否为空。