Я пытаюсь проверить строку с регулярным выражением
^(?:\(|%[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|\() * $/;
, который всегда возвращает ложное. Пожалуйста помоги.
RegExr использует ActionScript (flash) реализацию Regex. Это не то же самое, что реализация JS для Regex (или реализация регулярного выражения PERL/PHP). Вы можете использовать [regex101] (http://regex101.com) для изменения реализации (проверьте верхнюю часть, где указано PCRE - измените это на javascript) и проверьте регулярные выражения JS. – h2ooooooo