美文网首页
轻松推到正则表达式

轻松推到正则表达式

作者: 路路有话说 | 来源:发表于2017-04-11 17:20 被阅读14次

    匹配简单单词
    要从 hello world,helloworlD,hello World,helloWORLD,helloworld
    取出所有的world 这里很明显有两个
    js 的写法

     var str = "hello world,helloworlD,hello World,helloWORLD,helloworld";
        var pattern = /world/;
        var res = str.match(pattern);
        alert(res);
    

    但这里弹出的时候只会弹出一个world
    再** var pattern = /world/;** 改为 var pattern = /world/g;
    就可以匹配多个了


    php的写法

    $str = "hello world,helloworlD,hello World,helloWORLD,helloworld";
    $pattern = "/world/";
    preg_match($pattern,$str,$res);
    

    这里再输出$res 即可
    但是我想匹配多个怎么做呢 ,按照js 中的方法会返回一个错误

    无效的修饰符
    也就是说 php 并不知道这个g是啥意思,所以我们使用新方法
    preg_match_all($pattern,$str,$res);
    

    这样就能获取到多个匹配的多个词,显示效果如下

    显示效果

    更改需求 取出所有 w开头d结尾的单词

    目标字符串 hello world,wOrld,w2d,helloWORLD
    应该有 world,wOrld,w2d,helloWORLD

    首先是 js 只需要 ** var pattern = /w\w+d/g;** 即可
    ["world", "wOrld", "w2d"]
    然后是 php 也只是修改一下 $pattern = "/w\w+d/"; 就行了
    返回值
    array ( 0 => array ( 0 => 'world', 1 => 'wOrld', 2 => 'w2d', ), )

    更改需求 取出所有 w开头中间只有一个字符并以d结尾的词

    只需要将上面的 + 去掉即可,即 修改成

    var pattern = /w\w+d/g;  js
    
    $pattern = "/w\wd/";  php
    

    更改需求 取出所有 w开头中间只有两个字符并以d结尾的词

    这个时候需要使用大括号 {}

    var pattern = /w\w{2}d/g;  js
    
    $pattern = "/w\w{2}d/";  php
    

    更改需求 取出所有 w开头中间有两个到5个字符并以d结尾的词

    这个时候需要使用大括号 {}

    var pattern = /w\w{2,5}d/g;  js
    
    $pattern = "/w\w{2,5}d/";  php
    

    得出一个 公式

    \w{n,m}  表示匹配n到m 个字符 m 可以不写
    字符可以为 下划线 数字以及大小写字母
    

    更改需求 取出所有world 不管大小写

    /world/i     js
    /world/i     php
    

    更改需求 取出所有world 仅大写或者仅小写

    以js 作为范例,php这里就不写了    
    /world/g 
    /WORLD/g
    

    但是这样不够优雅world 小写 的意思是 首字母是w 结尾字母是d 中间有三个字母 所以我们可以这样写

    /w[a-z]{3}d/g
    /W[A-Z]{3}D/g
    同时因为我们要取出 orl 这三个字母 也可以写成[l-r] 表示 
    从l到r中间任意字母
    

    得到 公式[a-z] 表示 字母a 到z 中任意的字母 [A-Z]同理

    相关文章

      网友评论

          本文标题:轻松推到正则表达式

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