我对正则表达式并不熟悉。谁能告诉我这个正则表达式试图做什么?它是返回布尔值还是数组?
$res = preg_match('#^[A-Z]{1}( [0-9]{1,3})?((\.[0-9]{1,3}){0,2})?$#i', $value);
答案 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)
答案 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个数字零,一次或两次
$结束(即在之前的搜索标准之后没有任何内容
匹配字符串的结尾
我不区分大小写的搜索