【问题标题】:How to create a regex which accepts 12 numbers with plus, minus, space如何创建一个接受 12 个带加号、减号、空格的数字的正则表达式
【发布时间】:2015-09-07 10:51:21
【问题描述】:

我想创建应该包含以下内容的正则表达式:

  • 正则表达式用于验证电话号码,因此它的最小长度应为 10 位,最大长度为 12 位,+- 和空格等特殊符号除外。
  • 加号只能在开始时使用。

我尝试了下面的正则表达式,但不适合我。

^\+[-0-9 ]\d{10,12}$

请告诉我如何实现这一目标。以下是我需要编写正则表达式的几个示例:

+12 1234567890
+12 12 345 567 89
+12 123-455-6789
+9712345567

在据说是重复的问题中,没有任何关于将长度限制为最多 12 个数字的信息。

【问题讨论】:

标签: javascript regex


【解决方案1】:

This regex 允许 + 在开头和 - 或数字之间的空格。

^\+?[0-9](?:[- ]?[0-9]){9,11}$

最后一个字符必须是数字。

【讨论】:

    【解决方案2】:

    您可以使用以下正则表达式来验证您的电话号码:

    ^\+?(?![^ -]*[ -]{2})(?=(?:[ -]*\d){10,12}$)\d[\d -]*\d$
    

    demo(注意\n被添加到否定字符类,因为它是一个带有多行标志的演示。)

    正则表达式验证字符串是否匹配以下内容:

    • ^\+? - 以可选的 + 开头
    • (?![^ -]*[ -]{2}) - 没有连续的连字符空格
    • (?=(?:[ -]*\d){10,12}$) - 总位数为 10 到 12(不包括空格或连字符)
    • \d[\d -]*\d$ - 匹配字符串是否以数字开头和结尾,并且可能包含空格或连字符。

    【讨论】:

    • 无连续特价规则从何而来?这不是问题。它也没有说第一个和最后一个字符必须是数字。如果空格和连字符不重要,那么它们出现在哪里也没有关系。
    • @AlanMoore:我无法想象一个电话号码不遵守这些规则。可以吗?
    • 我无法想象一个系统需要这些规则。这些字符的存在和位置是否有助于区分一种输入和另一种输入? OP没有这么说——事实上,他甚至没有说他们是电话号码!根据您回答类似问题的经验,在我看来,您正在阅读问题中的内容。或者也许只是为了让这个问题更有趣。 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多