2010-08-27 2 views

ответ

3

/ являются разделители.

?! является negative lookahead.

[a-z] является character class (любой символ в диапазоне аз)

+ является one-or-more times из предыдущего рисунка ([a-z] в данном случае)

: просто двоеточие буквальным

Это примерно означает «заглядывайте вперед и убедитесь, что не являются альфа-символами, за которыми следует двоеточие ».

Это регулярное выражение будет иметь больше смысла, если бы он имел начало строки якоря: /^(?![a-z]+:/, поэтому он не будет соответствовать abc: (как один из других ответов сказать), но без (^) Я не знаю, как это полезно.

2

согласно Regex Buddy (продукт я очень рекомендую):

Assert that it is impossible to match the regex below starting at this position (negative lookahead) «(?![a-z]+:)» 
    Match a single character in the range between “a” and “z” «[a-z]+» 
     Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+» 
    Match the character “:” literally «:» 
0

(?!REGEX) - это синтаксис для negative lookahead. Проверьте ссылку для объяснения взглядов.

Повторное выражение выходит из строя, если в строке из текущего положения отображается шаблон [a-z]+:. Если шаблон не найден, регулярное выражение будет успешным, но не будет потреблять никаких символов.

Это будет соответствовать 123: или abc но не abc:

Это будет соответствовать : в abc:.

+0

Нет, это [не правильно.] (Http://rubular.com/r/sGqgeS5yPi). Он по-прежнему соответствует 'abc:' – Aillyn

+0

@Aillyn Я не вижу, как регулярное выражение будет полезно без какого-либо шаблона до или после просмотра. – Amarghosh

Смежные вопросы