美文网首页
正则表达式

正则表达式

作者: code_nerd | 来源:发表于2018-01-04 11:09 被阅读0次

    正则表达式在开发中不会频繁使用,但是需要使用的时候就需要去查阅,这里做一下学习笔记

    正则表达式的作用

    匹配 分割 替换 查找

    正则表达式主要由两部分组成,pattern 和subject
    pattern 是我们想要的结果集,subject 则是搜索的主体

    其中pattern的一些知识 可以查阅 30分钟入门正则表达式
    推荐一个博客更简单的学习正则表达式地址

    //放一些常见的匹配

    //匹配url
    $pattern = '#^(http|https):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(?::\d{1,5})?(?:$|[?\/#])#i';
    
    //匹配邮箱
    $pattern = '/^[a-z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])+\.(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i';
    
    php中的函数查阅官方文档

    正则匹配的主要工作,在于pattern的写法上,
    以下做一些简单的说明

    //第一个简单的php示例
    $pattern = '/\d+/';//要查找的结果集 匹配一个以上的数字
    $subject='dsd1230555d';//要查找的主体 字符串
    $result=preg_match($pattern,$subject,$match);
    var_dump($result);//打印是否匹配成功
    var_dump($match);//打印匹配结果
    
    //第一个简单的js 示例
    var subject='123ddd';
    var pattern =/\d+/;//不要加引号 js中的分隔符是/
    var res = subject.match(pattern);//简单的理解是,js的字符串 继承自string 拥有string的函数
    console.log(res);
    

    元字符

    
    .   匹配除换行符以外的任意字符
    \w  匹配字母或数字或下划线或汉字
    \s  匹配任意的空白符
    \d  匹配数字 
    \b  匹配单词的开始或结束
    ^   匹配字符串的开始
    $   匹配字符串的结束
    

    限定符

    *   重复零次或更多次
    +   重复一次或更多次
    ?   重复零次或一次
    {n} 重复n次
    {n,}    重复n次或更多次
    {n,m}   重复n到m次
    
    用于,限定该字符前的
    [0-9]{10}//匹配10个数字
    \d{10}//匹配10个数字
    [aeiou]{3,}匹配3个及其以上的aeiou
    

    范围符

    [0-9] 等价于 \d
    [a-z0-9A-Z_] 等价于 \w
    [aeios] 匹配aeiou 中任意一个
    

    分支条件

    a|b|c 匹配字符中的a 或者b 或者c
    

    分组

    重复单个字符(直接在字符后面加上限定符就行了);但如果想要重复多个字符又该怎么办?你可以用小括号来指定子表达式(也叫做分组),然后你就可以指定这个子表达式的重复次数了

    $pattern = '#([a]\d)+#';// 匹配a1a2
    $subject='a1a2345677444dd33344';//
    $result=preg_match($pattern,$subject,$match);
    

    反义

    有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义

    \W  匹配任意不是字母,数字,下划线,汉字的字符
    \S  匹配任意不是空白符的字符
    \D  匹配任意非数字的字符
    \B  匹配不是单词开头或结束的位置
    [^x]    匹配除了x以外的任意字符
    [^aeiou]    匹配除了aeiou这几个字母以外的任意字符
    

    常见匹配

    (?:exp) 匹配exp 且包含exp
    preg_match('#Windows(?:2000|XP|7)#', 'WindowsXP2000', $matchResult1);
    //打印为 WindowsXP
    
    (?=exp) 匹配exp前面的 
    preg_match('#Windows(?=2000|XP|7)#', 'WindowsXP2000', $matchResult1);
    //打印为 Windows
    
    (?<=exp)匹配exp后面的
    preg_match('#(?<=2000|XP|7)ssss#', 'WindowsXPssss', $matchResult1);
    //打印为 ssss
    

    相关文章

      网友评论

          本文标题:正则表达式

          本文链接:https://www.haomeiwen.com/subject/fanlnxtx.html