Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Регулярное выражение


Автор: rcdimon 29.3.2008, 10:47
Всем привет. В регулярных выражениях есть возможность задавать условия. Например

например выражение, которое мы хотим найти находится либо в скобках, либо это слово.
Пример: 
 (Operand1 + Operand2)
или 
Operand1

(\()? - ищет необязательную открывающую скобку. Теперь если она есть- надо считать все до  закрывающей. Если ее нет- просто считать слово. Задаем условие на наличие первого совпадения, Если оно было- ищем до скобки. Иначе все слово. Регулярка для этого приведена ниже

(\()?(?(1)(.+)\)|(\w+))


Так собственно в чем вопрос- я написал регулярку с использованием условий... Но в JS она не работает... ругается на '(?('.. Что в регулярках JS ваще нет условий или может они просто записыываются как-то иначе?

Автор: ksnk 29.3.2008, 11:35
 А что должна делать вот эта конструкция? 
?(1)

Автор: rcdimon 29.3.2008, 11:47
?(1) Условие. Проверяет существование 1- того что в первой скобке \(
То, что следует после условия- выполняется если оно истино... все что после | выполняется если условие ложно

Автор: AKS 29.3.2008, 13:44
rcdimon, видимо некие злоумышленники ввели Вас в заблуждение. ;)
В js-диалекте регулярных выражений нет условных конструкций.

Автор: rcdimon 29.3.2008, 13:53
Мдя... Ужасно  smile 

Автор: Itsys 29.3.2008, 14:13
А чем не устраивате такая конструкция:
Код

/(\(.+\)|\w+)/


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)