繁体   English   中英

此正则表达式或preg_match检查什么

[英]What does this regex or preg_match check

我对正则表达式并不熟悉。 有人可以告诉我这个正则表达式要做什么吗? 它返回布尔值还是数组?

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

崩溃...

  • ^[AZ]{1} -从行首开始,匹配AZ中的一个字符... [AZ]
  • ( [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-2 {0,2}匹配,并且由于?而可选 $指定此匹配在行尾完成。

  • i -结束正则表达式,设置忽略大小写。 这意味着,例如第一个[AZ]可以是[az]而无需更改任何匹配项。

一些可能的示例:

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.

等等。

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

preg_match始终返回一个int值(如果匹配则返回1,否则返回0)。 如果需要数组,则该数组通过引用接受一个第三参数,该参数将填充结果。

#匹配字符串的开头

^开头为

[AZ] {1}以一个大写字母开头

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

((。[0-9] {1,3}){0,2})? 可能后面跟着点的模式,然后是1-3位数零,一到两次

$以(以上一个搜索条件后为空)结尾

#匹配字符串结尾

我不区分大小写的搜索

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM