首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证数字,其中包括最大一个连字符(-),但从字符计数中排除

验证数字,其中包括最大一个连字符(-),但从字符计数中排除
EN

Stack Overflow用户
提问于 2022-07-26 15:58:23
回答 1查看 77关注 0票数 0

验证数字,其中包括最大一个连字符(-),但从字符计数中排除

允许四个数字之间只有一个连字符。

正则表达式下面的示例还将连字符数计算为字符数:

代码语言:javascript
复制
^(?!\D*(\d)(?:\D*\1)+\D*$)(?=.{4}$)[0-9]*(?:-[0-9]*){0,1}[0-9]+$

上面的一个验证1112为它的4位,但它将失败111-2,因为有一个连字符和五个数字,这是不允许的。

示例:

  • 1234允许作为它的4位数
  • 允许使用123-4,因为我们需要跳过计数的连字符
  • 当字符串中使用相同的数字时,不允许使用1111
  • 111-1不允许,因为数字是相同的,甚至用连字符-分隔。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-27 09:25:06

您可以使用

代码语言:javascript
复制
^(?!\D*(\d)(?:\D*\1)+\D*$)(?=(?:\D*\d){4}\D*$)[0-9]+(?:-[0-9]+)?$

regex演示。详细信息

  • ^ -字符串的开始
  • (?!\D*(\d)(?:\D*\1)+\D*$) -字符串不能包含相同的数字,而不管字符串中存在任何非字字符。
  • (?=(?:\D*\d){4}\D*$) -是一种正的前瞻,它需要四次出现任意零或多个非数字,后面跟着一个数字,然后是任何零或多个非数字,直到字符串的末尾。
  • [0-9]+(?:-[0-9]+)? -一个或多个数字,然后是一个可选的-和一个或多个数字。
  • $ -字符串的末端。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73126481

复制
相关文章

相似问题

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