我有几个正则表达式模式,我必须否定它们所有,所以我正在尝试构建somo通用正则表达式否定,类似/ ^(anypattern)/但我遇到麻烦..
例如,我有这样的文字:zzzzzAAAAA@AAAA_AAAzzzzzzAAAAA@AAAA.AAAggggggAAAAA@AAA.AAAooooooooo
和这种模式:[A-Z]+@[A-Z]+\\.[A-Z]{2,4}
,我需要一些东西来否定这一点。我会得到一个包含以下匹配的数组:
zzzzzAAAAA@AAAA_AAAzzzzzz , gggggg , ooooooooo
请注意,AAAAA@AAAA_AAA
仅包含在内,因为它有一个_而不是一个点
我的正则表达式都很简单,没有任何这些特殊的caracteres:\ s,\ t,\ r,\ n,\ v,\ f,\ b等等。
我试图用负面的解释来解决它,但没有成功
答案 0 :(得分:1)
尝试使用与正则表达式完全相同的拆分吗?
var input = "zzzzzAAAAA@AAAA_AAAzzzzzzAAAAA@AAAA.AAAggggggAAAAA@AAA.AAAooooooooo"
var output = input.split(/[A-Z]+@[A-Z]+\.[A-Z]{2,4}/)
console.log(output)
// outputs ["zzzzzAAAAA@AAAA_AAAzzzzzz", "gggggg", "ooooooooo"]
但是,您可能需要清空空元素,请考虑
var input = "AAAAA@AAAA.AAAzzzzzAAAAA@AAAA_AAAzzzzzzAAAAA@AAAA.AAAggggggAAAAA@AAA.AAAooooooooo"
var output = input.split(/[A-Z]+@[A-Z]+\.[A-Z]{2,4}/)
console.log(output)
// outputs ["", "zzzzzAAAAA@AAAA_AAAzzzzzz", "gggggg", "ooooooooo"]
设置输出变量后,您可以添加this answer
的礼貌output = output.filter(function(n){ return n != undefined && n.length})
// which outputs ["zzzzzAAAAA@AAAA_AAAzzzzzz", "gggggg", "ooooooooo"]