2013-12-09 2 views
1

Я пытаюсь проверить строку с регулярным выражением
^(?:\(|%[0-9]+)(?:\s+|%[0-9]+|\) and+|\) or+|\)+|and|or|\()*$
Я испытал это регулярное выражение против различных сценариев и работало нормально для моих потребностей. Я использовал http://gskinner.com/RegExr/, чтобы проверить его.
Когда я пытаюсь использовать его в javascript, он дает мне ошибку времени выполнения, говоря, что регулярное выражение недопустимо. Я использую следующий кодТест строка против RegEx шаблон в Javascript

var pattern = new RegExp("^(?:\(|%[0-9]+)(?:\s+|%[0-9]+|\) and+|\) or+|\)+|and|or|\()*$"); 
var filterExpress = this.model.FilterExpression(); 
var result = pattern.test(filterExpress); 

Когда я пытаюсь использовать его как показано ниже

var pattern = /^(?:\(|% [0 - 9]+)(?:\s+ |% [0 - 9]+|\) and+|\) or+|\)+ | and | or|\() * $/; 

, который всегда возвращает ложное. Пожалуйста помоги.

+1

RegExr использует ActionScript (flash) реализацию Regex. Это не то же самое, что реализация JS для Regex (или реализация регулярного выражения PERL/PHP). Вы можете использовать [regex101] (http://regex101.com) для изменения реализации (проверьте верхнюю часть, где указано PCRE - измените это на javascript) и проверьте регулярные выражения JS. – h2ooooooo

ответ

0

Используйте это для объявления Вашего регулярного выражения:

re = /^(?:\(|%[0-9]+)(?:\s+|%[0-9]+|\) and+|\) or+|\)+|and|or|\()*$/; 

ИЛИ используя RegExp объект:

var pattern = new RegExp("^(?:\\(|%[0-9]+)(?:\\s+|%[0-9]+|\\) and+|\\) or+|\\)+|and|or|\\()*$"); 

Помните, что вам нужно дважды бежать в RegExp конструктора.

+0

Это не непревзойденная скобка. Это требование в моем выражении. Я сопоставляю строку типа (% 1 и% 2). Мое выражение корректно, поскольку я проверял его на инструментах regex, проблема в том, что я не могу сравнивать свою строку с javascript. – JSLearner

+0

См. Обновленный ответ. Я опубликовал свой ответ, прежде чем был отредактирован вопрос. – anubhava

+0

Спасибо, что работает ... какие символы мне нужно удвоить при записи шаблона в javascript? – JSLearner

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