正则表达式 笔记

1.表达式的格式: "/表达式/[修正符]" 

2.正则表达式的组成部分: 
    1. 原子是组成正则表达式的基本单位,在分析正则表达式时,应作为一个整体。 
       原子包括以下内容: 
        > 单个字符、数字,如a-z,A-Z,0-9。 
        > 模式单元,如(ABC)可以理解为由多个原子组成的大的原子。 
        > 原子表,如 [ABC]。 
        > 重新使用的模式单元,如:\\1 
        > 普通转义字符,如:\d, \D, \w 
        > 转义元字符,如:\*,\. 
        > 元字符

  *2. 元字符(具有特殊意义字符): 
        [] 表示单个字符的原子表 
            例如:[aoeiu] 表示任意一个元音字母 
                  [0-9] 表示任意一位数字 
                  [a-z][0-9]表示小写字和一位数字构成的两位字符 
                  [a-zA-Z0-9] 表示任意一位大小字母或数字 
        [^] 表示除中括号内原子之外的任何字符 是[]的取反 
            例如:[^0-9] 表示任意一位非数字字符 
                  [^a-z] 表示任意一位非小写字母 
        {m}    表示对前面原子的数量控制,表示是m次 
            例如:[0-9]{4} 表示4为数字 
                  [1][3-8][0-9]{9} 手机号码 
        {m,} 表示对前面原子的数量控制,表示是至少m次          
            例如: [0-9]{2,} 表示两位及以上的数字 
        {m,n}表示对前面原子的数量控制,表示是m到n次 
            例如: [a-z]{6,8} 表示6到8位的小写字母 
        * 表示对前面原子的数量控制,表示是任意次,等价于{0,} 
        + 表示对前面原子的数量控制,表示至少1次,等价于{1,} 
        ? 表示对前面原子的数量控制,表示0次或1次(可有可无) 等价于{0,1} 
            例如:正整数:[1-9][0-9]* 
                    整数:[\-]?[0-9]+ 
                    email: 
        () 表示一个整体原子,【还有一个子存储单元的作用】。 
                也可以使用?:来拒绝子存储。 (?:.*?) 
        |  表示或的意思 
                (rea|blue) 字串red或blue 
        ^  用在正则单元块的开头处,表示必须以指定的开头 
        $  用在正则单元块的结尾处,表示必须以指定的结尾 
        .  表示任意一个除换行符之外的字符 
                常用组合: .*?  表示最小匹配所有字符(拒绝贪婪匹配) 
     3. 普通转义字符:

\d匹配一个数字;等价于[0-9]
\D匹配除数字以外任何一个字符;等价于[^0-9]
\w匹配一个英文字母、数字或下划线;等价于[0-9a-zA-Z_]
\W匹配除英文字母、数字和下划线以外任何一个字符;等价于[^0-9a-zA-Z_] 
\s匹配一个空白字符;等价于[\f\n\r\t\v] 
\S匹配除空白字符以外任何一个字符;等价于[^\f\n\r\t\v]
\f匹配一个换页符等价于 \x0c 或 \cL
\n匹配一个换行符;等价于 \x0a 或 \cJ 
\r匹配一个回车符等价于\x0d 或 \cM
\t匹配一个制表符;等价于 \x09\或\cl 
\v匹配一个垂直制表符;等价于\x0b或\ck 
\oNN匹配一个八进制数字 
\xNN匹配一个十六进制数字
\cC匹配一个控制字符 

        

  4. 模式修整符 
        i 表示不区分大小写; 
            "/[a-zA-Z]/" <==>"/[a-z]/i" 
        s 表示匹配视为单行(就是可以让点.支持换行) 
        U 表示拒绝贪婪匹配

 

  5.正则表达式的() [] {} 的区别:

  ()和[]有本质的区别

  ()内的内容表示的是一个表达式,()本身不匹配任何东西,也不惜那是匹配任何东西,只是把括号内的内容作为

  同一个表达式来处理,例如(ab){1,3},就表示ab一起连续出现最少1次,最多三次。如果没有括号的话,ab{1,3},

  就表示a 后面紧跟的b出现的最少一次,最多三次。另外,括号在匹配模式中也跟重要。这个就不延伸了。

  []表示匹配字符在[]中,兵出现一次,并且reshuffle字符写在[]会被当成普通字符来匹配,例如[(a)],会匹配(、a、)、这三个字符。

  所以()[] 无论是作用还是表示的含义。都有天壤之别,没有什么联系。

  https://www.cnblogs.com/richiewlq/p/7307581.html

 

3.php小实例,电话号码验证:

<html>
<head>
<title>正则表达式</title>
</head>
<body>
<form action="index.php" method="post">
<input type="text" name="phnum">
<input type="submit" value="提交">
</form>
</body>
</html>

<?php
if ($_POST) {
$phnum = $_POST['phnum'];
$res = preg_match('/^1(38|39|58|69)[0-9]{8}$/', $phnum);
if ($res){
echo "你的号码是:".$phnum;
}else{
echo "输入错误";
}

}

转载于:https://www.cnblogs.com/ck-24/p/9336517.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值