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

使用正则表达式验证字符串数据,该正则表达式只允许长度为6的数字和-(连字符),但连字符不应是结尾,数字不应相同

高森
2023-03-14

使用具有-(hypen)的正则表达式验证字符串

要求是:字符串只包含数字和-(连字符),不以-(连字符)结尾,所有其他数字不相同。

^([0-9-])(?!\1+$)[0-9-]{5}$

上面的一个只允许数字和连字符,但不限制以连字符结尾,并检查所有其他数字是否相同。

前任:

1111-1 Not allowed because all are same digits 
1111-2 Allowed
11112- Not allowed as its end with - Hypen
-12345 Not allowed as its start with - hypen 

共有2个答案

裴宏壮
2023-03-14

我的2美分允许[01]连字符:

^(?=.{6}$)(\d)(?=.*(?!\1)\d)\d+(?:-\d+)?$

查看在线演示

易弘阔
2023-03-14

您可以将模式写成

^(\d)(?!(?:\1|-)+$)(?!\d*-\d*-)[\d-]{4}\d$

解释

  • ^字符串的开头
  • (\d)在组1中捕获一个数字
  • (?!消极前瞻
    • (?:\1 |-)$检查右侧不仅有第1组值或连字符

    正则表达式演示

    如果至少应有1个连字符:

    ^(\d)(?!(?:\1|-)+$)(?=\d*-)[\d-]{4}\d$
    

    正则表达式演示

 类似资料:
  • 我正在尝试编写一个正则表达式,允许数字和字符之间使用连字符(-),但删除字符之间的连字符,并用PHP字符串中的空格替换它。我是正则表达式的初学者,不知道如何编写正则表达式,有人能帮我吗 这里我需要的是一个类似于PHP的字符串 在应用正则表达式后,我需要的输出必须是这样的 还有其他方法吗?请帮忙

  • 我正在尝试编写一个正则表达式以允许数字和中间只有一个hypen(不能在开始或结束时)说模式:,是可以接受的,但模式:或或或或是不可接受的 我试过这样做,但这将允许-在开始时,也允许多个- 我不太擅长正则表达式,所以一点解释会很有帮助。 编辑:很抱歉再次打扰你,但我需要的数字只有2位(123-346)应被视为无效。

  • 其中,我需要包括连字符和空格。 这意味着还必须可以输入值“”。

  • 我想验证一个字符串,例如 AB01 CA50 箱 字符串总数必须为四 前两个字符必须是字母表 最后两个字符必须是数字 我使用了以下表达式,但它只能验证前两个字符作为字母表,如何验证最后2个和总数?

  • 问题内容: 我想测试一个字符串是否以a结束。我希望下面的Java行能打印出正确的文字。为什么打印错误? 问题答案: 在Java Regex中,(在String中的任意位置找到匹配项)和(与整个String匹配)之间存在区别。 String仅具有一个方法(实现等效于以下代码:),因此您需要创建一个与完整String匹配的模式:

  • 我需要一个javascript正则表达式来验证电话号码。数字不能是单个零或仅为零。 e. g. 这些是不允许的。 但这些是允许的: 到目前为止,我拥有的javascript正则表达式是: 但这似乎不起作用。 规则是电话号码可以包含数字和和和。它可以以0开头,但电话号码不能是单个0或仅包含或不包含上述字符的多个零。 你能给我指一下正确的方向吗。提前谢谢。