Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式模式无法理解_Php_Regex - Fatal编程技术网

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

我需要一个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} 将确保匹配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