2015-08-12 2 views
0

Я пытаюсь проверить, существует ли значение между «mystring» и символом конца (который является трубой). НоПочему не выполняется оператор «или» в регулярном выражении Javascript

new RegExp('mystring:.+\|').test('bla') 

Оценивает true, хотя я избегаю '|' оператор. То, что я пытался добиться был такой:

new RegExp('mystring:.+\|').test('mystring:|') 

Вычисляется в значение False (как ничто между 'MyString:'.. И сбежавший '|'

new RegExp('mystring:.+\|').test('mystring:something|') 

вычисляться Правда

Это это не то, что я вижу, поскольку все оценивает Истину, и это не похоже на то, что «|» ускользает ...

+0

См [Почему регулярные выражения Конструкторы должны быть в два раза бежал?] (Http://stackoverflow.com/questions/17863066/why-do-regex-constructors-need- (который близок к дублированию этого вопроса, но здесь он уже знает об этом решении). Выражение '\ |' сначала выполняется в соответствии с правилами управляющих последовательностей строковых литералов. Проверьте значение выражения '' \ \ "' в вашей консоли: это '' | "'. – apsillers

+0

Вот почему вы должны использовать регулярные выражения. – SLaks

ответ

1

Побег с обратной косой чертой. Если " используется внутри RegExp, тогда вы должны убрать все обратные косые черты, существующие внутри регулярного выражения еще раз.

new RegExp('mystring:.+\\|').test('mystring:something|') 

или

new RegExp('mystring:.+[|]').test('mystring:something|')