Php 正则表达式模式无法理解
我需要一个php的正则表达式模式。它将只接受以下两种模式Php 正则表达式模式无法理解,php,regex,Php,Regex,我需要一个php的正则表达式模式。它将只接受以下两种模式 XXXX-XXXX-2 XXXX-XXX-3 这里,X=数字 比如它会接受, 1111-1111-2 1234-567-3 7894-753-2 5287-6325-3 但它不会接受 526-5248-2 7895-4125-1 7854-856-4 asas-wewe-y 等等 这种模式的正则表达式是什么?答案 有多种方法可以实现这一点。这里有一种方法: ^\d{4}-\d{3,4}-(2|3)$ 解释 \d将匹配任何数字 {4
XXXX-XXXX-2
XXXX-XXX-3
这里,X=数字
比如它会接受,
1111-1111-2
1234-567-3
7894-753-2
5287-6325-3
但它不会接受
526-5248-2
7895-4125-1
7854-856-4
asas-wewe-y
等等
这种模式的正则表达式是什么?答案
有多种方法可以实现这一点。这里有一种方法:
^\d{4}-\d{3,4}-(2|3)$
解释
\d将匹配任何数字
{4} 将确保匹配4次
-将匹配连字符符号
\d将匹配任何数字
{3,4}将匹配数字3或4次
-将匹配连字符符号
2 | 3将匹配2或3
在线测试
您可以在此处在线测试:
这会奏效的
^\d{4}-\d{3,4}-[23]$
正则表达式分解
可能是\b[1-9]{4}-[1-9]{3,4}-2|3\bit不清楚7854-856-4失败和7894-753-2更正之间的区别您是否看到最后4个不在示例中…@freedev,它只接受最后一个字符中的2或3,而不是任何其他字符。仔细检查这两种图案。然后你就会明白了。@FrayneKonok,你的正则表达式也不能工作,因为它也接受“0”。仔细检查我的问题。我清楚地提到了X=digit。@JayBlanchard表示歉意,回答修改将解释放在这里,以防其他网站宕机或删除其历史记录。这样你就可以为将来的访客保留答案了。@JayBlanchard我已经在做这个了…:-
^ #Start of string
\d{4} #Match 4 digits
- #Match - literally
\d{3,4} #Match 3 or 4 digits
- #Match - literally
[23] #Match 2 or 3
$ #End of string