function fuzzQuery(rawQuery)
{
re = /(?=[\(\) ])|(?<=[\(\) ])/;
strSplit = rawQuery.split(re);
alert(strSplit);
};
不起作用(没有对话框)。
我检查http://rubular.com/处的表达式,它按预期工作。
而
re = /e/
确实有效。
输入字符串是
hello:(world one two three)
预期结果是:
hello:,(,world, ,one, ,two, ,three, )
我查看了以下SO问题:
Javascript simple regexp doesn't work
Why this javascript regex doesn't work?
但是我没有犯错,比如将表达式创建为字符串,或者当它是字符串时不会出现双重反斜杠。
答案 0 :(得分:4)
正则表达式的主要问题是javascript不支持 Lookbehind 。
re = /(?=[\(\) ])|(?<=[\(\) ])/
^^^ A problem...
相反,您可以使用替代方法:
re = /(?=[() ])|(?=[^\W])\b/;
strSplit = rawQuery.split(re);
console.log(strSplit);
// [ 'hello:', '(', 'world', ' ', 'one', ' ', 'two', ' ', 'three', ')' ]
答案 1 :(得分:0)
您可以使用以下内容:
re = /((?=\(\) ))|((?=[\(\) ]))./;
strSplit = rawQuery.split(re);
console.log(strSplit);