以下为本篇文章全部内容:
大家好 我是叶子,sunny的朋友。
下面接着来讲 正则的修饰符,在正则中 修饰符应该是最不容易了解的部分。有时候加上或者不加上修饰符可能会得到不同的结果!
在javascript 中 修饰符 比较少,或者说我了解的比较少!
i 修饰符 这个修饰符 估计大家基本上都知道 他是干嘛的
对 就是 忽略大小写 PHP 和 Javascript 都支持该修饰符
<script> var a = 'Wac'.match(/[a-z]+/i); console.log(a); </script>
<?php preg_match('/[a-z]+/i', 'Wac', $arr); print_r($arr);
g 全局匹配 这个修饰符 只有 Javascript 支持 我理解等同于 php的 preg_match_all
<script> var a = 'Wac cAc'.match(/[a-z]+/gi); console.log(a); </script>
<?php preg_match_all('/[a-z]+/i', 'Wac cAc', $arr); print_r($arr);
m 修饰符 加上这个修饰符 后 ^ 符号由原来的开始将变成 行前 $ 结束将变成 行后
<script> var a = '\n\ cAc\n\ kkk'.match(/^[a-z]+$/mgi); console.log(a); </script>
<?php preg_match_all('/^[a-z]+$/mi', ' cAc kkk', $arr); print_r($arr);
javascript 只有上面 3个修饰符. 下面将讲解PHP的其他修饰符
s 修饰符 在正则 中 . 并不包括 \n 等换行符,而加上该修饰符 则 . 包括换行符 在javascript 中相当于 [\w\W] 或者 [\d\D]
<script> var a = 'a\n\ cAc\n\ kkk'.match(/^a[\w\W]+kkk$/i); console.log(a); </script>
<?php preg_match_all('/^a.+kkk$/si', 'a cAc kkk', $arr); print_r($arr);
x 修饰符 在正则中忽略空白字符 和忽略#注释
<?php preg_match_all('/ [a-z]+ # 查找字母 | [0-9]+ # 查找数字 /x',"abc89cc", $arr); print_r($arr);
D 修饰符 强制 $ 不匹配最后一个 换行符 默认情况下是匹配的
<?php preg_match_all('/^abc$/',"abc\n", $arr); print_r($arr); preg_match_all('/^abc$/D',"abc\n", $arr); print_r($arr);
如果已经使用了m 修饰符 这个修饰符会被忽略
S 修饰符 这个修饰符 我很少用到 ,安装官方的意思来讲 主要是用于性能方面优化的。如果多次匹配的时候可以加上
U 修饰符 和 *? 类似 获取最短的贪婪匹配
<?php preg_match('/a[0-9b]*b/U', 'a1234567b89b', $matches1); print_r($matches1); preg_match('/a[0-9b]*b/U', 'ab', $matches1); print_r($matches1); preg_match('/a[0-9b]*?b/', 'a1234567b89b', $matches); print_r($matches); preg_match('/a[0-9b]*b/', 'a1234567b89b', $matches2); print_r($matches2);
这个 修饰符 和 *? 其实在使用的过程中还是有一些区别的~~ U 会把所有的 * 全部变成了 *? 而 在实际中 我们可能部分是 * 部分是 *?
不小心的话 有可能会得到不符合要求的结果
所以 要注意代码中到底是使用U 还是使用*? +? 等
X 修饰符 这个修饰符我很少用到,主要是严格正则的语法,不兼容的语法可能不能通过执行。
u 修饰符 这个是对utf-8 的支持选项
总赞数量:18274
总踩数量:128087
文章数量:29