1

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

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

1 回答 1

9

如果您想匹配前面:-)没有“请忽略我”的 a,那么您需要一个否定的 lookbehind而不是 lookahead 。但是,JavaScript 不支持后视。(?<!...)(?!...)

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

于 2010-07-20T09:20:21.367 回答