【问题标题】:Regular expression to match 7-12 digits; may contain space or hyphen正则表达式匹配 7-12 位数字;可能包含空格或连字符
【发布时间】:2010-01-19 17:56:34
【问题描述】:

我一直在尝试解决 PHP 正则表达式问题一段时间,但我无法完全完成。我需要编写一个匹配 7 到 12 位数字 (0..9) 的正则表达式,并且可以选择在相邻数字之间使用单个连字符或单个空格。这就是我目前所拥有的......

$match1 = preg_match('/^\d[0-9\-\s]{5,10}\d$/', $number);
$match2 = preg_match('/(-\s|\s-|--|\s\s)/', $number);

如您所见,我必须使用两种不同的检查,但这对我来说仍然不够,因为我可以输入以下字符串:“1-2-3-4-5”,它仍然会通过,因为总共有 9 个字符,但它应该会失败,因为只有 5 位数字。

任何关于此事的帮助都会很棒,谢谢!

【问题讨论】:

    标签: php regex


    【解决方案1】:

    怎么样:

    /^(\d[-\s]?){6,11}\d$/
    

    【讨论】:

      【解决方案2】:

      试试这个正则表达式:

      /^\d(?:[-\s]?\d){6,11}$/
      

      这允许使用连字符或空格字符分隔的七到十二位数字。

      【讨论】:

      • +1 将单个数字放在第一位,而不是最后一位。只是个人喜好
      【解决方案3】:
      ^(?:\d[-\s]?){6,11}\d$
      

      【讨论】:

      • 啊.. 你没有意识到 [-\s] 是可选的。所以我确实打败了你;-)
      【解决方案4】:

      试试这个正则表达式:

      \d([-\s]?\d){6,11}
      

      【讨论】:

        猜你喜欢
        • 2012-09-24
        • 1970-01-01
        • 2021-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-30
        相关资源
        最近更新 更多