[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Составление регулярки
chertixa
Здравствуйте! Помогите, пожалуйста, составить регулярку: любая комбинация букв и цифр, начинающаяся с буквы, но эта комбинация не должна быть 'abc' или 'bcd'.

Вот так работает (только для одного слова 'abc'):

preg_match('/(?!(abc))([a-zA-Z](\w*))/s',$v,$p)


А вот так уже нет:

preg_match('/(?![(abc)(bcd)])([a-zA-Z](\w*))/s',$v,$p)


Оно принимает и abc, и bcd.
Что неправильно?..



Спустя 2 минуты (25.04.2011 - 08:32) Trianon написал(а):
preg_match('/^(?!(abc$|bcd$))([a-zA-Z0-9]+)$/s',$v,$p)

Спустя 16 минут, 32 секунды (25.04.2011 - 08:48) chertixa написал(а):
Это не то...
Во-первых, слово не может начинаться с цифры, а во-вторых, это только часть строки, знак $ не нужен.

Спустя 10 минут, 44 секунды (25.04.2011 - 08:59) Trianon написал(а):
chertixa
Про слово не было сказано ни слова. Про часть строки - тоже.
Так что учитесь формулировать задачу.

Что же касается ответа, то для того, чтобы переделать Ваш вариант, в моей регулярке информации достаточно.

Спустя 24 минуты, 16 секунд (25.04.2011 - 09:23) chertixa написал(а):
Trianon, я писала о том, что комбинация должна начинаться с буквы.

Почему, если из Вашей регулярки убрать знак начала строки ^, то она начинает распознавать запрещенные комбинации (abc и bcd) ?

Спустя 29 минут, 21 секунда (25.04.2011 - 09:53) kirik написал(а):
Цитата (chertixa @ 25.04.2011 - 02:23)
если из Вашей регулярки убрать знак начала строки ^, то она начинает распознавать запрещенные комбинации (abc и bcd) ?

А зачем убирать? Над добавить:
/^(?!(?:abc|bcd))([a-zA-Z][a-zA-Z0-9]+)$/s

Спустя 5 минут, 34 секунды (25.04.2011 - 09:58) chertixa написал(а):
kirik
Это я понимаю)
Мне надо, чтобы перед этой комбинацией еще что-нибудь было написано!
Вообщем, это часть предложения, т.е. спереди есть что-то и сзади. Вот мне надо, чтобы посередине было [a-zA-Z][a-zA-Z0-9]+, но не равное abc и bcd.

Спустя 36 минут, 4 секунды (25.04.2011 - 10:34) kirik написал(а):
Так тогда:
/^(?!(?:.*(abc|bcd)))([a-zA-Z][a-zA-Z0-9]+)$/s

если я всё правильно понял
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.