首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为“12A13”这样的字符串生成regex代码:

如何为“12A13”这样的字符串生成regex代码:
EN

Stack Overflow用户
提问于 2019-07-06 14:16:11
回答 1查看 36关注 0票数 1

我有一个查询,比如需要为字符串生成一个正则表达式,如"12A15“或"12a15".here,它有3个组件,1-9最大长度为21-9 lmax,长度为2。

我编写了Regex来验证字符串,但它仍然无法验证给定的数字:

代码语言:javascript
复制
(^[1-9]{1,2}[{d,D}][{4,6,8,10,12,20}]{1,2})+(\s?(\+|\-)\s?)([1-9]{1,2}([{d,D}][{4,6,8,10,12,20}]{1,2}))$

在这里,在正则表达式中,我正在验证一个字符串12D22 +3d20。这说明它是匹配的,但不应该这样做,因为22不在列表中。在有效的5D20+5d12字符串中,1220可以是4681220列表中的任意数字。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-11 11:08:02

你可以用

代码语言:javascript
复制
^[0-9]{1,2}[dD]([468]|1[02]|20)\s?[+-]\s?[0-9]{1,2}[dD]([468]|1[02]|20)$

regex演示正则图

详细信息

  • ^ -字符串的开始(如果在.matches()中使用则省略)
  • [0-9]{1,2} -1或2位数
  • [dD] - dD
  • ([468]|1[02]|20) - 468101220
  • \s? -一个可选的空格
  • [+-] - +-
  • \s? -一个可选的空格
  • [0-9]{1,2}[dD]([468]|1[02]|20) -见上文
  • $ -字符串的结尾(如果在.matches()中使用则省略)。

在Java中:

代码语言:javascript
复制
String block = "[0-9]{1,2}[dD](?:[468]|1[02]|20)";
String regex = block + "\\s?[+-]\\s?" + block;
bool matched = your_string.matches(regex);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56914911

复制
相关文章

相似问题

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