首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以避免将以下规则中的9位数字与我的正则表达式匹配?

是否可以避免将以下规则中的9位数字与我的正则表达式匹配?
EN

Stack Overflow用户
提问于 2022-03-08 17:42:21
回答 2查看 79关注 0票数 2

我有下面的正则表达式,它遵循以下规则

代码语言:javascript
运行
复制
(?<!x)(?=(?:[._ –-]*\d){9})\d{2,}[._ –-]*\d{2,}[._ –-]*\d{2,}

规则:

  1. 如果“X”或“x”先于数字,则不应检测到9位序号。(工作精细)
  2. 数字之间的9位数字、非数字字符或空白(最多3)也应该匹配。(工作精细)

下面的是regex演示,它显示了与上述规则相匹配的数字。

https://regex101.com/r/mrGcvp/1

现在,regex模式不应该匹配遵循上述规则的9位数字,如果它属于以下排除规则。

排除规则,

以下规则根本不应匹配该数字。

  1. 如果以“9”开头的数字
  2. 如果位置1-3中的号码为“666”。
  3. 如果位置1- 3中的数字“000”。
  4. 如果位置4-5中的“00”号。
  5. 如果位置6-9中的“0000”号
EN

回答 2

Stack Overflow用户

发布于 2022-03-08 18:10:41

您可以使用

代码语言:javascript
运行
复制
(?<!x)(?=(?:[._ –-]*\d){9})(?!9|66\D*6|00\D*0|(?:\d\D*){3}0\D*0|(?:\d\D*){5}0(?:\D*0){3})\d{2,}[._ –-]*\d{2,}[._ –-]*\d{2,}

regex演示

添加的部分是(?!9|66\D*6|00\D*0|(?:\d\D*){3}0\D*0|(?:\d\D*){5}0(?:\D*0){3}),如果在(?<!x)(?=(?:[._ –-]*\d){9})检查之后,立即在当前位置的右侧出现匹配,则匹配失败

  • 9| -一个9数字,或
  • 66\D*6| - 66,零或多个非数字,6,或
  • 00\D*0| - 00,零或多个非数字,0,或
  • (?:\d\D*){3}0\D*0| -三次出现一个数字,然后出现零或多个非数字,然后出现0、零或多个非数字、0
  • (?:\d\D*){5}0(?:\D*0){3}) -一个数字和零或多个非数字的五次出现,0,然后三次出现零或多个非数字,后面跟着一个0字符。

注意,我使用的是\D*而不是[._ –-]*,这在这里应该足够了,但是如果您想让它更精确,可以用[._ –-]*替换每个\D*

票数 2
EN

Stack Overflow用户

发布于 2022-03-08 18:17:50

您可以使用此正则表达式:

代码语言:javascript
运行
复制
(?<![xX])(?=(?:[._ –-]*\d){9})(?!9|666|000|.{3}00|.{5}0000)\d{2,}[._ –-]*\d{2,}[._ –-]*\d{2,}

RegEx演示

为了执行所有规则,我们有一个负面的展望:

代码语言:javascript
运行
复制
(?!9|666|000|.{3}00|.{5}0000)

这一点如下:

  • 9:不是从9开始的
  • 666:不是从666开始的
  • 000:不是从000开始的
  • .{3}00:不允许00在4-5位置
  • .{5}0000:不允许0000在6-9位置
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71399339

复制
相关文章

相似问题

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