常见正则表达式的两种模式和preg_match函数的匹配细节
2018-09-09 本文已影响0人
LittleTrue
正则匹配一般有两种使用场景:
1、在一个字符串中寻找符合规则的子串, 进行替换或删除
在php中,提供了preg_math()和preg_match_all函数进行正则匹配。关于这两个函数原型如下:
int preg_match|preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
提供preg_replace进行正则替换:
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
2、检测一个字符串是否符合指定的正则规则
使用修饰符$,即可检测当前字符串是否符合正则规则。
正则规则注释符的影响:
可以使用: ?<说明>
对编写的正则表达式进行文本说明, 但是在编译过程中, 一些正则验证网站可以正常编译并返回结果, 但是在代码中,例如使用preg_match则正则不能正常运用, 把注释符去掉则正常, 估计是由于不同语言内核实现的正则语言引擎是不同的造成的。
常见的正则规则:
身份证号码: ^\d{17}[0-9xX]$
手机号码: ^1[3456789]{1}\d{9}$
电话: ^(((010|021|020|022|023|024|025|026|027|028|029|852)|((010)|(021)|(022)|(023)|(024)|(025)|(026)|(027)|(028)|(029)|(852)))?\D?\d{8}|((0[3-9][1-9]{2})|((0[3-9][1-9]{2})))?\D?\d{7,8})$
零和非零开头的数字:^(0|[1-9][0-9]*)$
中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$