消极的环顾四周

时间:2010-07-20 09:12:20

标签: javascript regex lookbehind

以下正则表达式是错误的 - 有人可以帮助找到所有:-)前面没有“请忽略我”吗? 我之前不需要这样的正则表达式。单词边界可能会混淆事物 感谢

<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>

1 个答案:

答案 0 :(得分:9)

如果您希望将之前之前的:-)与“请忽略我”匹配,那么您需要一个负面的背后隐藏(?<!...)而不是lookahead {{ 1}}。但是,JavaScript不支持lookbehind。

所以你可以做的是匹配(?!...)然后,如果它匹配,检查捕获组(\bplease ignore me\s*)?:-\)是否为空。