2013-05-28 4 views
0

Я хочу проверить предложение с регулярным выражением, которое содержит только отрицательные образы. Так что, если написать, используя только негативные образы внутри регулярного выражения

^(?!My Words)$ 

и Test строка some characters. Я ожидаю, что регулярное выражение должно возвратиться, но это не так. должен ли персонаж совместить персонаж, чтобы повлиять на результат?

ответ

2

Регулярное выражение вы предоставили средства:

  • Начало строки
  • Следующие символы не являются «Мои слова»
  • Конец строки

Существует нет проверьте регулярное выражение, в котором говорится, что строка должна содержать что угодно. Более конкретно, он должен ничего не содержать. В этом случае прогноз не делает ничего.

Предположительно вы хотите что-то больше, как это:

^(?!My Words).*$ 

.* является только ноль или более диких карт, так что в принципе ничего. В этом случае функция «вперед» предотвращает строку от , начиная с «Мои слова».

Если вы хотите, чтобы предотвратить «Мои Слова» от появления везде, что-то, как это должно работать:

^(?!.*My Words).*$ 
+0

Понял .. Спасибо .. регулярные выражения просто embrassing .. так легко, но так запутано :) –

+1

или просто '^ (?! My Words)', если вы только тестируете на матч – Anirudha

+0

@Anirudh Ну, это зависит. Если вы выполняете 'string.matches' (в зависимости от того, какой язык), это не сработает. – Dukeling