我想集成一个排除从内部组电子邮件regex匹配,我已经尝试了排除字符< & >从组[\p{L}\p{S}][^<>]排除不成功。
^(?!.{256})(?:[\p{L}]+(?:\.[\p{L}]+)*@(?:(?:[\p{L}](?:[\p{L}\p{S}]*[\p{L}])?\.)+[\p{L}](?:[\p{L}\p{S}]*[\p{L}])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\]))$

发布于 2022-01-03 21:59:45
如果您不想匹配这些字符,那么使用\p{S}也可以匹配<和>,并且继续使用字符类[\p{L}\p{S}],您可以使用负前瞻性来排除这些字符的匹配。
由于@前面的部分不能匹配尖括号,所以可以在字符串的开头添加另一个否定的lookahad,在右边断言非<或>。
^(?!\S*[<>])(?!.{256})(?:[\p{L}]+(?:\.[\p{L}]+)*@(?:(?:[\p{L}](?:[\p{L}\p{S}]*[\p{L}])?\.)+[\p{L}](?:[\p{L}\p{S}]*[\p{L}])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\]))$看一个regex演示。
发布于 2022-01-04 00:16:55
内联方法是从符号类中排除<>。为了做到这一点,在两个地方用[\p{L}\p{S}]替换(?:\p{L}|[^\P{S}<>])
其中的\p{L}必须显式或被修改。
但是,在类内部,每个项目都是或会的,而且效率不高。
^(?!.{256})(?:[\p{L}]+(?:\.[\p{L}]+)*@(?:(?:[\p{L}](?:(?:\p{L}|[^\P{S}<>])*[\p{L}])?\.)+[\p{L}](?:(?:\p{L}|[^\P{S}<>])*[\p{L}])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\]))$发布于 2022-01-04 00:33:11
使用https://www.regular-expressions.info/charclassintersect.html
[\p{L}\p{S}&&[^<>]]它从<>的外部字符类中减去在内部字符类中指定的\p{L}\p{S}字符。
https://stackoverflow.com/questions/70570398
复制相似问题