首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >regex到底是怎么回事?教授一点也不解释

regex到底是怎么回事?教授一点也不解释
EN

Stack Overflow用户
提问于 2021-09-09 01:22:20
回答 2查看 97关注 0票数 1

我在试着写一个正则表达式过滤器。以下是参数:

  • 11个字符
  • 第一个字符是大写A-M
  • 第二个字符是大写字母A-L
  • Chars 3-10 (接下来的8个字符)是数字,但不能全部为0(即00000000是坏的,00001000是好的)。
  • 最后一个字符是大写A-Z,但不能是字母Z或字母O。

我到这里来了

代码语言:javascript
运行
复制
^[A-M]{1}[A-L]{1}\d{8}[A-Y^O]{1}

它匹配所有内容,但不从数字中排除8个零,也不从最后一个字符中排除O。

任何帮助都是非常感谢的;教授在解释regex方面做了一项非常出色的工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-09 01:32:57

您可以使用正的前瞻性模式来确保至少有一个非零数字,并使用两个范围而不是一个范围跳过字符集中的字母O

代码语言:javascript
运行
复制
^[A-M][A-L](?=.*[1-9])\d{8}[A-NP-Y]$

演示:https://regex101.com/r/5eivNv/1

票数 1
EN

Stack Overflow用户

发布于 2021-09-09 07:47:45

另一个变体可能是使用负前瞻性(?!0{8})断言零的次数不超过8次,然后匹配8位数。

请注意,您可以从模式中省略{1}

代码语言:javascript
运行
复制
^[A-M][A-L](?!0{8})\d{8}[A-NP-Y]$

Regex演示

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

https://stackoverflow.com/questions/69111192

复制
相关文章

相似问题

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