【问题标题】:Matching fixed-format numbers in regex匹配正则表达式中的固定格式数字
【发布时间】:2009-03-20 14:03:28
【问题描述】:

快速正则表达式问题(因为我不擅长)

我有一个只能包含以下任一字段的字段:

XXXXXXXXXXXXXXXX-XXXX 其中 X 是实数。

如果正则表达式与 PHP 的正则表达式函数配合良好,则奖励。

答案:

以下是 RoBorg 的 答案中的代码,供感兴趣的人参考。

if(!preg_match("/^\d{6}-?\d{4}$/", $var))
{
    // The entry didn't match
}

【问题讨论】:

  • 请澄清 - 您是指任何实数还是特定实数。我的回答假设是后者。
  • @Ólafur:只是好奇;关于正则表达式,您有什么不明白的地方吗?
  • 请考虑一个更好的标题 - XXXXXX-XXXX 不是一个固定的数字,它是一个固定的格式数字。
  • Alnitak 你可以根据需要编辑我的问题 :)
  • @John 对它的经验很少,但是像这样的问题只是尖叫正则表达式,RoBorg 的回答实际上帮助我更多地理解正则表达式。

标签: php regex


【解决方案1】:
/^\d{6}-?\d{4}$/

那是

^     Start of string
\d{6} a digit, repeated exactly 6 times
-?    an optional "-"
\d{4} a digit, repeated exactly 4 times
$     end of string

【讨论】:

    【解决方案2】:

    很快,它会是这样的: \d{6}-?\d{4}

    您可能需要在 PHP 中转义连字符。

    【讨论】:

      【解决方案3】:

      如果您想要一个特定的数字(问题措辞最初有些模棱两可),请搜索(例如):

      ^123456-?7890$
      

      如果搜索 任何 具有该格式的 10 位数字,请搜索:

      ^\d{6}-?\d{4}$
      

      破折号后的 ? 限定符表示“前面的实体出现 0 次或 1 次”

      【讨论】:

        猜你喜欢
        • 2011-02-11
        • 1970-01-01
        • 2021-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-15
        • 1970-01-01
        相关资源
        最近更新 更多