Я пытаюсь проверить, существует ли значение между «mystring» и символом конца (который является трубой). НоПочему не выполняется оператор «или» в регулярном выражении Javascript
new RegExp('mystring:.+\|').test('bla')
Оценивает true, хотя я избегаю '|' оператор. То, что я пытался добиться был такой:
new RegExp('mystring:.+\|').test('mystring:|')
Вычисляется в значение False (как ничто между 'MyString:'.. И сбежавший '|'
new RegExp('mystring:.+\|').test('mystring:something|')
вычисляться Правда
Это это не то, что я вижу, поскольку все оценивает Истину, и это не похоже на то, что «|» ускользает ...
См [Почему регулярные выражения Конструкторы должны быть в два раза бежал?] (Http://stackoverflow.com/questions/17863066/why-do-regex-constructors-need- (который близок к дублированию этого вопроса, но здесь он уже знает об этом решении). Выражение '\ |' сначала выполняется в соответствии с правилами управляющих последовательностей строковых литералов. Проверьте значение выражения '' \ \ "' в вашей консоли: это '' | "'. – apsillers
Вот почему вы должны использовать регулярные выражения. – SLaks