当前位置: 首页 > 知识库问答 >
问题:

如何创建一个正则表达式来验证数字是否不相同,甚至用连字符(-)分隔

皇甫伟彦
2023-03-14

使用以下正则表达式

^(\d)(?!\1+$)\d{3}-\d{1}$

它适用于该模式,但我需要验证所有数字是否都不相同,即使在/之后用连字符(-)分隔。

例子:

0000-0 not allowed (because of all are same digits)
0000-1 allowed
1111-1 not allowed (because of all are same digits)
1234-2 allowed

共有2个答案

田镜
2023-03-14

您需要一个反向引用,例如:

^(\d){4}-\1$
顾兴昌
2023-03-14

您只能排除-或同一数字,直到字符串结束:

^(\d)(?!(?:\1|-)*$)\d{3}-\d$

正则表达式演示

如果不想匹配字符串末尾的double--或一个-,并匹配可选的重复:

^(\d)(?!(?:\1|-)*$)\d*(?:-\d+)*$

解释说明

  • ^字符串开头
  • (\d)在组1中捕获一个位数
  • (?!(?:\1 |-)*$)负向前看,不仅要断言-和相同的数字,直到字符串的结尾
  • \d*匹配可选数字
  • (?:-\d)*可选择重复匹配-和1位
  • $字符串结尾

正则表达式演示

 类似资料:
  • 使用具有-(hypen)的正则表达式验证字符串 要求是:字符串只包含数字和-(连字符),不以-(连字符)结尾,所有其他数字不相同。 上面的一个只允许数字和连字符,但不限制以连字符结尾,并检查所有其他数字是否相同。 前任:

  • 问题内容: 深入研究堆栈溢出后,我发现了一些代码来检查字符串是否为字母数字且长于8个字符。效果很好。现在,如果包含至少2个数字,如何使它返回true?我想我必须在某处添加。 问题答案: 您不需要单独的if条件。单个正则表达式将为您完成所有工作。

  • 本文向大家介绍请用正则表达式验证数字相关面试题,主要包含被问及请用正则表达式验证数字时的应答技巧和注意事项,需要的朋友参考一下 /[0一9]*$/

  • 这个regex:匹配这些字符"示例字符串的ASKJKSDJKDSJÄÖÅüé" "ASKJKSDJK_-。;,DSJ!”#€% 我想匹配多种语言中任何和所有不是字母或数字的字符。 一个负正则表达式可能是一个自然的方向吗? 我应该提到我想找到的正则表达式的一个预期用途是验证规则的密码: 它需要包含至少一个特殊字符,我定义为不是数字也不是字母。 如果可能的话,似乎应该避免定义特殊字符的范围,因为为什么

  • 有没有简单的方法来检查字符串的第一个和最后一个字符是否相同,只使用正则表达式? 我知道你可以和查拉特核实一下 我不是要求正则表达式匹配第一个字符和最后一个字符

  • 我有一组由连字符分隔的ID,其中至少可以有6个字符,包含字母数字值和一些特殊字符,在末尾,只有数字值是不允许的。如下所示: 我正在尝试下面给出的具有以下规则的以下模式,但面临一些测试查询的困难... https://regex101.com/r/d8MFRE/5