&引用;及;在Javascript正则表达式中。。。我错过了什么?
我正在研究一个正则表达式,如果匹配的单词以任何顺序出现,它将返回true 这种方法(此处讨论:) 在Ruby中匹配&引用;及;在Javascript正则表达式中。。。我错过了什么?,javascript,regex,regex-lookarounds,Javascript,Regex,Regex Lookarounds,我正在研究一个正则表达式,如果匹配的单词以任何顺序出现,它将返回true 这种方法(此处讨论:) 在Ruby中匹配tag1 tag2和tag2 tag1(),但在JavaScript中不起作用。有什么想法吗 编辑:我的意思是“在JS中不起作用” "tag1 tag2".match(/(?=.*tag1)(?=.*tag2)/) 返回[“”] 对此问题的回答指出,正则表达式以 /(?=.*tag1)(?=.*tag2)/.test("tag1 tag2") 该正则表达式在JavaScript
tag1 tag2
和tag2 tag1
(),但在JavaScript中不起作用。有什么想法吗
编辑:我的意思是“在JS中不起作用”
"tag1 tag2".match(/(?=.*tag1)(?=.*tag2)/)
返回[“”]
对此问题的回答指出,正则表达式以
/(?=.*tag1)(?=.*tag2)/.test("tag1 tag2")
该正则表达式在JavaScript中运行良好:
功能检查{
发现的var=/(?=.*tag1)(?=.*tag2)/.测试;
document.write(找到+“
”);
}
勾选('xxtag1xxxtag2xxxx');//两人都认为是真的
勾选('xxtag2xxxtag1xxxx');//两人都认为是真的
勾选('xxtag2xxxtag0xxxx');//只找到一个:false
我很难看出它在任何正则表达式引擎中是如何工作的,但是如果match
返回一个数组(而不是null
),它确实匹配!请注意,正则表达式与空字符串相匹配(后跟tag1
和tag2
),空字符串确实是输入的一部分。/(?=.*tag1)(?=.*tag2)/.test('tag1 tag2')
有效,但tag1 tag2.match(/(?=.*tag1)(?=.*tag2)/)返回[]
。你能告诉我为什么一种格式返回的结果与另一种不同吗?@aaandre:test返回的是布尔值,而不是匹配结果。它们是不同的方法@aaandre:当字符串包含tag1
和tag2
时,模式匹配长度为零的字符串。test
方法在存在匹配项且存在匹配项时返回true
。match
方法返回匹配项,长度为零的字符串就是匹配项。如果模式中包含的内容多于前瞻性匹配,则匹配内容将多于长度为零的字符串。
/(?=.*tag1)(?=.*tag2)/.test("tag1 tag2")