2009-11-12 4 views
0

Эй, ребята, я хотел спросить, можете ли вы сделать некоторые условные проверки на одном регулярном выражении, используя lookahead или какой-либо другой механизм.Регулярное выражение Условный Lookahead/Lookback?

К примеру, в моем регулярном выражении Я хочу к следующему значению в диапазоне от 0-5, если предыдущий был более чем 3 или диапазон 0-9, если предыдущий был под 3.

Например:

[0-9] следующий матч должен быть [0-5] или [0-9] в зависимости от того, было ли предыдущее значение под или над 5.

как код думать об этом, как это:

звонки это A -> [0-9] [0-9] < - называть это B

, если (А < 5), то В [0-9] В остальное [0-5]

Возможно ли это в качестве одного регулярного выражения?

ответ

4

Это формат для положительного опережающего просмотра:

/(?=expression)/ 

И это отрицательное опережения:

/(?!expression)/ 

EDIT

Для примера, это будет означать что-то вроде это:

/((?=[5-9]+)[0-5]+)|((?=[0-4]+)[0-9]+)/ 
+1

Это предполагает, что «более 3» включает в себя 3. – Franz

+0

ахха, что может быть так, я предполагаю «|» является оператором ИЛИ? –

+0

Да, труба ('|') является OR в регулярном выражении. – Amber