正则表达式

正则表达式是用来验证数据的,验证数据非常简单,但是执行效率不高,通过一些元字符(具有特殊含义的字符)去验证数据

(一)       定义字符集

[a-e]                   随意匹配a到e连续字符中的某一个字符

[aeiou]                随意匹配aeiou这5个零散字符中的某一个字符

[a-z]                   随意匹配26个小写英文字母之一

[A-Z]                 随意匹配26个大写英文字母之一

[a-zA-Z]             随意匹配一个大写 或 小写英文字母

[0-9]               随意匹配0到9之间任意一个数字

[a-zA-Z0-9]       随意匹配一个大小写英文字母或数字

[a-zA-Z0-9_-]    随意匹配一个大小写英文字母或数字或_下划线或-中横线之一

[5-7]              随意匹配5到7连续数字的一个数字

注意:

匹配数字、英文字母的一段  ,段的开始到结尾必须由小到大设置

像[7-2]、[h-c]等等都是错误的语法

(二)        特别字符集

$           匹配目标字符串的”结尾”位置。

^          “托字符”匹配目标字符串的”开始”位置

              ^的作用:

①    $pat = “/^hello/”;  /hello需要在目标内容开始出现

②    $pat = “/[^0-9]/”匹配非0到9之间数字以外的其他字符内容

( )          标记一个子表达式的”开始”和”结束”位置

              小括号( )作用:

                                   ① 提高子表达式优先级

② 可以从大的字符串拆分小的内容出来

*           表示其前面那个单元出现0次或以上 任意次数

.            匹配除换行符 之外的任何单字符, 例如 .* 表示匹配任何内容

+          表示其前面那个单元出现1次或以上 任意次数

?           表示其前面那个单元出现0次或1次  要么出现、要么不出现

           这个符号是用来转义的,去除符号的特殊意思,只保留符号的本质意思

|            指明两项之间只选择一个,或 的意思

(三)        组合字符集

d          表示匹配0到9之间的一个数字  是[0-9]的别名

[1-9]  匹配一个非0数字

[5-9]  匹配5到9之间的一个数字

w          表示匹配(大小写)字母、数字、下划线其中的一个[a-zA-Z0-9_]

s           表示空格

                    //匹配hello 和 beijing中间有三个空格

$pat = “/hello   beijing/”;  //可读性不好

$pat = “/hellosssbeijing/”;  //可读性好

(四)        限制字符

{m}        其前一单元严格出现m次

{m,}       其前一单元出现至少m次,至多不限制

{m,n}     其前一单元出现至少m,至多n次,n比m要大

(五)        模式修正符

正则完全的设置: $pat = “/正则内容/模式修正符”;

I : 忽略大小写

U :就近匹配,避免贪婪匹配!

(六)       单次 / 全局匹配

preg_match()

可以通过正则对目标字符串进行“单次”匹配

preg_match_all

(正则,内容,匹配结果)函数

该函数返回二维数组

可以实现对内容的全局匹配,所有与模式符合的内容都给匹配出来

       例:

                     // 单次匹配

                     $pat = "/d/";

                     $str = "2016-12-14 19:21:55";

                     preg_match($pat,$str,$out);                      // array(1) { [0]=> string(1) "2" }

                     // 全局匹配

                     preg_match_assll($pat,$str,$out);

                     var_dump($out);

(七)       常用验证

// 邮箱验证

$pat  = "/`[a-z1-9][a-z0-9.]{5,}@(d+|[a-z]+)(.[a-z]+)+$/i";

$pat =“/w+([.-]?w+)?@w+.(com|cn|net|org)/”;

// 手机号验证

$pat = "/1[3578]d{9}$/";

原文地址:https://www.cnblogs.com/zwtqf/p/6188860.html