我正在尝试针对正则表达式测试字符串
^(?:\(|%[0-9]+)(?:\s+|%[0-9]+|\) and+|\) or+|\)+|and|or|\()*$
我已针对不同的场景测试了这个正则表达式,并且能够很好地满足我的需求。
我用http://gskinner.com/RegExr/来测试它
当我尝试在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|\() * $/;
总是返回false的。请帮忙。
答案 0 :(得分: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
构造函数中双重转义。