轻松推到正则表达式

2017-04-11  本文已影响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]同理

上一篇下一篇

猜你喜欢

热点阅读