正则表达式修饰符详解

发布于 2018-11-28 09:24:33 字数 1518 浏览 2232 评论 0

正则表达式中常用的模式修正符有 i、g、m、s、U、x、a、D、e 等,它们之间可以组合搭配使用,起到某些特定的效果,我们必须要牢记。

i 不区分(ignore)大小写

例如: /abc/i 可以匹配 abc、aBC、Abc

g 全局(global)匹配

如果不带 g,正则过程中字符串从左到右匹配,找到第一个符合条件的即匹配成功就返回
如果带 g,则字符串从左到右,找到每个符合条件的都记录下来,知道字符串结尾位置

var str = 'aaaaaaaa'
var reg1 = /a/; str.match(reg1)
// 结果为:["a", index: 0, input: "aaaaaaaa"]
var reg2 = /a/g; str.match(reg2)
// 结果为:["a", "a", "a", "a", "a", "a", "a", "a"]

m 多(more)行匹配

若存在换行 \n 并且有开始 ^ 或结束 $ 符的情况下,和 g 一起使用实现全局匹配,因为存在换行时默认会把换行符作为一个字符任务匹配字符串是个单行,g 只匹配第一行,添加 m 之后实现多行,每个换行符之后就是开始。

var str = "abcggab\nabcoab";
var preg1 = /^abc/gm; str.match(preg1)
// 结果为:["abc", "abc"]
var preg2 = /ab$/gm; str.match(preg2)
// 结果为:["ab", "ab"]

s 特殊字符圆点 . 中包含换行符

默认的圆点 . 是 匹配除换行符 \n 之外的任何单字符,加上 s 之后, . 中包含换行符

$str = "abggab\nacbs";
$preg = "/b./s";
preg_match_all($preg, $str,$matchs);
print_r($matchs);
//Array ( [0] => Array ( [0] => bg [1] => b [2] => bs ) )

U 只匹配最近的一个字符串,不重复匹配

$mode="/a(.*?)c/";
$preg="/a.*c/U"; //这两个正则返回相同的值
$str="abcabbbcabbbbbc";
preg_match($mode,$str,$content); echo $content[0];//abc
preg_match($preg,$str,$content); echo $content[0];//abc

提示

  • 修正符:x 将模式中的空白忽略
  • 修正符:A 强制从目标字符串开头匹配
  • 修正符:D 如果使用 $ 限制结尾字符,则不允许结尾有换行
  • 修正符:e 配合函数 preg_replace() 使用,可以把匹配来的字符串当作正则表达式执行

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

qq_aHcEbj

文章 0 评论 0

寄与心

文章 0 评论 0

13545243122

文章 0 评论 0

流星番茄

文章 0 评论 0

春庭雪

文章 0 评论 0

潮男不是我

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文