2015-05-16 2 views
1

Я пытаюсь создать RegEx в Javascript, который не соответствует, если появляется определенная строка. Поэтому я хочу совместить эту фигурную скобку {, но только если перед ней нет строки else.Как сделать JS RegEx не соответствовать, если появится определенная строка?

Я пытаюсь сделать это ^ *[^else]* *{.*$, но на самом деле это лань не совпадает, если какой-либо символ в else строки появляется, например, это не соответствует также это:

erai { Я хочу, чтобы соответствовать всем случаям, когда { появляются, несмотря на этот случай else {.

Пожалуйста, не могли бы вы мне помочь. Вот мои DEMO

+3

После просмотра [ваш регулярное выражение] (https://regex101.com/r/hY3eW1/1), я хотел бы предложить вы [узнаете немного больше о регулярных выражениях] (http://www.regular-expressions.info/tutorial.html) –

ответ

1

Вы можете использовать негативный прогноз. Это поддерживается JavaScript:

(?!\s*else).+ *({).*$| 

DEMO


JavaScript RegEx не поддерживает сослагательного наклонения, но мы можем использовать трюк для его работы:

(?!RegExp) 

Это первая часть , если RegExp(это регулярное выражение) не отображается, тогда мы делаем код после этого:

.+ *({).*$ 

Это RegEx, который мы запускаем. Разбитый делает, это:

.+  Match anything 
*  Until 0 - unlimited spaces 
({)  Capture the { 
.*$  Match anything till the end 

Теперь это не будет работать, если не добавить | в конце, или OR. Это будет обмануть его в рабочее, как если заявление

Regular expression visualization

Debuggex Demo

+0

благодарим за помощь. Но ваш DEMO также соответствует этому случаю 'else {'. Я не хочу соответствовать этому ... Пожалуйста, не могли бы вы мне помочь? – orsina

+0

@orsina обновлен :) – Downgoat

+0

это также соответствует 'else {' ... Как я уже сказал, я не хочу соответствовать этому случаю .. Решение @hwnd работает для меня – orsina

-2

То, что вы ищете, называется negative lookbehind.

+0

спасибо за предложение – orsina

+0

JavaScript не поддерживает отрицательный lookbehind – Downgoat

+0

Итак, @vihan есть какое-то решение для моего проблема? – orsina

Смежные вопросы