我正在研究一个正则表达式,如果以任何顺序出现匹配的单词,它将返回true。

这种方法(在这里讨论:Regular Expressions: Is there an AND operator?

(?=.*tag1)(?=.*tag2)


在Ruby中同时匹配tag1 tag2tag2 tag1http://rubular.com/r/374706hkft),但在JavaScript中不起作用。有任何想法吗?

编辑:通过“在JS中不起作用”我的意思是

"tag1 tag2".match(/(?=.*tag1)(?=.*tag2)/)


返回[""]

这个问题的答案指出,正则表达式的工作格式为

/(?=.*tag1)(?=.*tag2)/.test("tag1 tag2")

最佳答案

该正则表达式在JavaScript中可以正常工作:



function check(s) {
    var found = /(?=.*tag1)(?=.*tag2)/.test(s);
    document.write(found + '<br>');
}

check('xxtag1xxxtag2xxxx'); // both found: true
check('xxtag2xxxtag1xxxx'); // both found: true
check('xxtag2xxxtag0xxxx'); // only one found: false

关于javascript - Javascript正则表达式中的“AND”…我缺少什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29441322/

10-12 13:07