Отрицательный осмотр - PullRequest
1 голос
/ 20 июля 2010

следующее регулярное выражение неверно - может кто-нибудь, пожалуйста, помочь найти все :-), которые не имеют "пожалуйста, игнорируйте меня" впереди? Раньше я не нуждался в таком регулярном выражении. Границы слова могут запутать вещи.
Спасибо

<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 Ответ

9 голосов
/ 20 июля 2010

Если вы хотите сопоставить :-), который не предшествует с "пожалуйста, игнорируйте меня", тогда вам нужен отрицательный взгляд позади (?<!...) вместо lookahead (?!...).Тем не менее, JavaScript не поддерживает lookbehind.

Так что вы можете сделать это, сопоставив (\bplease ignore me\s*)?:-\), а затем, если он совпадает, проверить, является ли группа захвата $1 пустой.

...