这是一个替代方案
var str = '(obj.userAge EQUALS "51") AND (obj.userAddress CONTAINS "STREET1") OR (obj2.salary >= "3000")';
console.log(str.replace(/[()]/g, "").split(/[\. ]/));
在jsfiddle 上
如果您的地址中有空格,例如“STRE ET1”,或者地址或数字包含句点“。”,则可接受的方法和上述方法都会出现问题。
但这应该可以解决这些问题
var str = '(obj.userAge EQUALS "51") AND (obj.userAddress CONTAINS "STR EET1.SOME WHERE") OR (obj2.salary >= "3000")';
console.log(str.replace(/[()]/g, "").match(/(?:[^\s\."]+|"[^"]*")+/g));
在 jsfiddle 上
如果地址包含“(”或“)”,上述两个仍然会有问题,这也可以修复,下面应该修复它。
var str = '(obj.userAge EQUALS "51") AND (obj.userAddress CONTAINS "STR EET1.()SOME WHERE") OR (obj2.salary >= "3000")';
console.log(str.match(/(?:[^\s\.()"]+|"[^"]*")+/g));
在jsfiddle 上
使用这些方法无需忽略任何返回的空字符串 ("")
为了利益起见,所有方法的jsperf