Обычно я не отвечаю на вопросы gimme codez, но эй, это пятница!
Есть, возможно, тысячи вопросов здесь на SO, следуя той же схеме:
Plz help me with a regular expression for a string that
- _must_ contain at least one X
- _can_ contain Y
и ответ, как правило, что-то вроде
/^ Y* X [XY]* $/
или если вы фантазии
/^ (?=.*X) [XY]+ $
К сожалению, все эти ответы (или, вернее, эти вопросы) ошибочны. Проблема, как обычно, заключается в том, что спецификации неверны: искатель принимает некоторые «хорошие» примеры и описывает их в вопросе, но не понимает, что это описание также соответствует многим «плохим» случаям. Если взять буквально, на этот вопрос будет дано выражение, которое выполняет только половину его работы - да, оно проверяет хорошие случаи, но оно не отвергает плохие. Хорошее выражение должно сделать и то, и другое!
Пример: Я хочу проверить номер телефона, что-то вроде 123
или 123-456-789
. Так я отправляю вопрос о SO:
Plz help me with a regular expression:
- must contain at least one digit
- can contain a dash
и через несколько секунд я получаю
/^-*\d[\d-]*$/
, которые я проверить мои примеры и вставить в мой код (работает!). На следующее утро, к моему глубочайшему неловкости, кто-то регистрируется на мой сайт, содержащий этот «номер Telefone»:
----------3-----------
Мораль истории: никогда не проверять «струны». Проверка объектов домена!
Чтобы ответить на этот конкретный вопрос: я не могу предоставить вам хорошее регулярное выражение, пока вы не скажете мне, для чего он предназначен.
Можете ли вы показать нам, что вы пробовали, и почему это не сработало? –
'[a-zA-Z \ s '\ - \.] +' Вы ищете класс с квантором '+'. –
[прочитайте несколько руководств] (http://www.regular-expressions.info/tutorial.html), вы должны легко справиться с этим самостоятельно – musefan