否定正则表达式模式的问题

Problems to negate regex pattern

我有几个正则表达式模式,我必须全部否定它们,所以我正在尝试构建 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 只是因为它有一个 _ 而不是一个点

我的正则表达式都很简单,没有任何这些特殊字符:\s,\t,\r,\n,\v,\f,\b,etc..

我尝试用负面环视解决它但没有成功

尝试完全按照您的正则表达式使用拆分?

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"]