PHP - 匹配如下字符串的正则表达式:2012/018843/06


PHP - Regular expressions to match a string like this : 2012/018843/06?

我对正则表达式了解不多,但想创建一个正则表达式来验证这样的字符串:'2012/018843/06。

如果将来可以帮助某人,我想说的是南非公司注册号。

如果有人愿意发布一个可以通过 PHP 处理并匹配的正则表达式,那就太好了。如果没有,任何指向以这种方式创建正则表达式的"基础知识"的链接将不胜感激!

谢谢。

编辑:

我试过这个:

[0-9/]{14}

但它与长度并不完全匹配。

数字的长度是固定的吗?然后尝试

preg_match('#^'d{4}/'d{6}/'d{2}$#', $string)

语法:

  • 'd是表示任何十进制数字 (0-9) 的转义序列,也可以用 [0-9]
  • {4}定义,最后一个表达式(在本例中:小数digit) 必须出现 4 次,使用此表达式可避免多次重复前面的表达式,因此'd{4}表示'd'd'd'd
  • ^表示字符串并$字符串的末尾,因此这可确保有此字符串中没有其他字符,因此像 abc2012/018843/06def 这样的字符串不匹配

最简单的形式是:

preg_match("|^'d{4}/'d{6}/'d{2}$|", $input);

'd 标记匹配任何整数 0 - 9,{} 中的整数表示前面的标记允许重复多少次,/匹配文字/,因为我使用 | 作为正则表达式分隔符。

^标记是从字符串的开头匹配,$匹配字符串的末尾,这样,像aa2012/124521/11bb这样的东西就不会匹配(否则如果你取出^$,它会匹配)