轻松推到正则表达式
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中间任意字母