如何匹配 preg_match 中的两位数?

Posted

技术标签:

【中文标题】如何匹配 preg_match 中的两位数?【英文标题】:How to match two digits in pregmatch? 【发布时间】:2016-05-17 11:33:22 【问题描述】:

我返回了一个 preg_match 来检查起始数字是否为 9477 并且它工作正常。但现在我想添加另一个条件来添加94779476 应该是有效的。

条件如下:

    应包含 11 位数字 应该以94779476 开头

这是我的代码:

preg_match('/^9477\d7$/',$Mnumber)

【问题讨论】:

【参考方案1】:

在两个数字之间使用交替:

preg_match('/^947(?:7|6)\d7$/',$Mnumber)

(?:7|6) 是匹配数字 76 的非捕获组。非捕获组比捕获组更有效。

你也可以这样做:

preg_match('/^947[76]\d7$/',$Mnumber);

[67] 是匹配数字76 的字符类

【讨论】:

【参考方案2】:

在[]中使用分组

echo preg_match('/^947[76]\d7$/',$Mnumber);

【讨论】:

【参考方案3】:

只需使用(9477|9476)

echo preg_match('/^(9477|9476)\d7$/',$Mnumber);

你也可以使用:

    /^947(7|6)\d7$/ /^947[76]\d7$/

【讨论】:

以上是关于如何匹配 preg_match 中的两位数?的主要内容,如果未能解决你的问题,请参考以下文章

用Python中的正则表达式匹配日期?

使用 preg_match 匹配 IMG 标签的 SRC 属性

如何在PHP中preg_match一个可以为NULL的变量?

excel表格中的数字有一位数、两位数、三位数,可是排序只按第一位数排,怎样才能按1到10000的自然顺序排呢

输入5个整数,找出5个数中的两位数

正则表达式和 grep 仅匹配只有一位数或两位数的字符串