这个正则表达式或preg_match检查什么

时间:2011-01-26 22:52:55

标签: php regex preg-match

我对正则表达式并不熟悉。谁能告诉我这个正则表达式试图做什么?它是返回布尔值还是数组?

$res = preg_match('#^[A-Z]{1}( [0-9]{1,3})?((\.[0-9]{1,3}){0,2})?$#i', $value);

4 个答案:

答案 0 :(得分:4)

故障......

  • ^[A-Z]{1} - 从该行的开头,匹配来自A-Z的一个字符... [A-Z]
  • ( [0-9]{1,3})? - 子组\ 1 - 匹配一个空格,然后数字[0-9] 1-3位数{1,3}?使这一个可选。
  • ((\.[0-9]{1,3}){0,2})?$ - 子组\ 3(嵌套在\ 2中) - 匹配文字.然后数字[0-9] 1-3位长{1,3},匹配0此前一组的{0,2}?$可选,i指定此匹配在该行的末尾完成。

  • [A-Z] - 结束正则表达式,设置忽略大小写。这意味着,例如,第一个[a-z]可能是B 472.983.421 ( \1 = " 472" \2 = ".983.421" ) A ( \1 = "" \2 = "" ) C 18.1.1 ( \1 = " 18" \2 = ".1.1" ) D 0.0.0 ( \1 = " 0" \2 = ".0.0" ) d 0.0.0 ( \1 = " 0" \2 = ".0.0" ) # works due to the #i option. 而不会对匹配进行任何更改。

一些可能的样本:

{{1}}

等等。

答案 1 :(得分:1)

  • 在字符串的开头搜索A-Z中的一个字符:^ [A-Z] {1}
  • 空格后跟1-3位,可能不包括在内(?最后):( [0-9] {1,3})?
  • 后跟一个点和1-3位数(重复0-2次),可能不包括:((。[0-9] {1,3}){0,2})?

答案 2 :(得分:1)

preg_match总是返回一个int(如果匹配则为1,否则为0)。如果你想要一个数组,它会通过引用接受一个thrid参数,该参数将填充结果。

答案 3 :(得分:1)

匹配字符串的开头

^以

开头

[A-Z] {1}以一个大写字母

开头

([0-9] {1,3})?可能后跟一个空格和3位数

(([0-9] {1,3}){0,2})?可能后跟一个点的模式然后1-3个数字零,一次或两次

$结束(即在之前的搜索标准之后没有任何内容

匹配字符串的结尾

我不区分大小写的搜索