首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex从内部组匹配中排除字符

Regex从内部组匹配中排除字符
EN

Stack Overflow用户
提问于 2022-01-03 19:15:53
回答 3查看 194关注 0票数 0

我想集成一个排除从内部组电子邮件regex匹配,我已经尝试了排除字符< & >从组[\p{L}\p{S}][^<>]排除不成功。

代码语言:javascript
复制
^(?!.{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]?)\]))$

EN

回答 3

Stack Overflow用户

发布于 2022-01-03 21:59:45

如果您不想匹配这些字符,那么使用\p{S}也可以匹配<>,并且继续使用字符类[\p{L}\p{S}],您可以使用负前瞻性来排除这些字符的匹配。

由于@前面的部分不能匹配尖括号,所以可以在字符串的开头添加另一个否定的lookahad,在右边断言非<>

代码语言:javascript
复制
^(?!\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演示

票数 0
EN

Stack Overflow用户

发布于 2022-01-04 00:16:55

内联方法是从符号类中排除<>。为了做到这一点,在两个地方用[\p{L}\p{S}]替换(?:\p{L}|[^\P{S}<>])

其中的\p{L}必须显式或被修改。

但是,在类内部,每个项目都是或会的,而且效率不高。

代码语言:javascript
复制
^(?!.{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]?)\]))$

https://regex101.com/r/6OPVA8/1

票数 0
EN

Stack Overflow用户

发布于 2022-01-04 00:33:11

使用https://www.regular-expressions.info/charclassintersect.html

代码语言:javascript
复制
[\p{L}\p{S}&&[^<>]]

它从<>的外部字符类中减去在内部字符类中指定的\p{L}\p{S}字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70570398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档