2014-12-02 2 views
0

Я пытаюсь проверить, что строка имеет значенияRegex найти строку с пробелами или

edit=yes 
edit = yes 
edit= yes 
edit =yes 
edit=yesonce 
edit = yesonce 
edit= yesonce 
edit =yesonce 

То, что я до сих пор матчи на edit=yes, но больше ничего. Я думаю, что мои необязательные пробельные аргументы неверны, но не знаю, как это сделать.

edit[/s]?=[/s]?[yes|yesonce] 
+0

Сличитель для пространства '\ s' не'/s' – rpeshkov

+0

Кроме того, вы уверены * * более чем одно пространство будет быть неправым? – Deduplicator

ответ

1

Попробуйте это:

edit\s?=\s?yes(once)? 

Проблемы с регулярным выражением:

  • Пробел \s, а не /s - символ возврата - это обратная косая черта, а не слэш.
  • Вам не нужно [] вокруг одного символа (или сбежавшего лица)
  • [yes|yesonce] означает любой из символов y e s | y e s o n c e, а не либо yes или yesonce.
  • Вы имели в виду (yes|yesonce), хотя это всегда соответствовало бы yes, и не фиксировать once после того, как был согласован yes. Вы можете использовать (yesonce|yes) вместо того, чтобы избежать этого, но ..
  • yes(once)? проще :)

Если вы хотели, чтобы любое количество пробелов, а не один или ни один, вам нужно заменить соответствующие ? символы («ноль или один») с * («любое число, включая ноль»):

edit\s*=\s*yes(once)? 
+0

:-) для 'yes (once)?', а не '|' –

+0

. Еще один момент, скорее всего, должно быть принято считать пробелы. – Deduplicator

+0

Очень вероятно; добавила записку об этом. – Blorgbeard

0

Попробуйте это регулярное выражение: /edit\s*=\s*(yes|yesonce)/ig

это будет гарантировать, что:

  • редактировать слово
  • пробельные или не
  • =
  • пробелы или нет * да слово
+0

'/ ig' означает нечувствительность к регистру справа? – bflemi3

+0

@ bflemi3 есть. и ищет глобальность. (извините, слишком много javascript :-)) –

0

Вы можете использовать это регулярное выражение, были отменены ваши косые:

(edit[\s]?=[\s]?[yes|yesonce]+) 

случаев Тестовые here

+0

Ваш '[yes | yesonce] +' не делает то, что вы думаете. .. см. мой ответ и попробуйте тестовый пример ['edit = seyconcce'] (http://rubular.com/r/28uR2sC52t) – Blorgbeard