游客您好
第三方账号登陆
  • 点击联系客服

    在线时间:8:00-16:00

    客服电话

    17712677918

    电子邮件

    857020071@qq.com
  • 扫描二维码

    关注微信公众号

推荐阅读
sxadmin 管理员
江苏省苏州市 | 互联网
  • 关注0
  • 粉丝0
  • 帖子175
热议话题
Node.js 简介
2021-08-28 0
Node.js 是一个开源与跨平台的 JavaScript 运行时环境。 它是一个可用于几乎任何项目
精选帖子

JavaScript正则表达式之分组匹配 / 反向引用

[复制链接]
sxadmin 发表于 2021-10-25 10:27:51 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
语法
元字符:(pattern)  作用:用于反复匹配的分组
属性$1~$9  如果它(们)存在,用于得到对应分组中匹配到的子串
\1或$1  用于匹配第一个分组中的内容
\2或$2  用于匹配第一个分组中的内容
...
\9或$9  用于匹配第一个分组中的内容

用法示例
var reg = /(A+)((B|C|D)+)(E+)/gi;//该正则表达式有4个分组//对应关系//RegExp.$1 <-> (A+)//RegExp.$2 <-> ((B|C|D)+)//RegExp.$3 <-> (B|C|D)//RegExp.$4 <-> (E+)
以上的代码也同时给出了$1~$9的用法
$1~$9是正则表达式预定义的静态属性,通过RegExp.$1引用

分组嵌套关系说明
上述代码也可以说明分组的嵌套关系
[url=][/url]
//测试环境    Chrome浏览器var str = "ABCDE";var reg = /(A+)((B|C|D)+)(E+)/gi;str.match(reg);//输出:["ABCDE"]reg.exec(str,'i');//输出:["ABCDE", "A", "BCD", "D", "E"]RegExp.$1;//输出:"A"RegExp.$2;//输出:"BCD"RegExp.$3;//输出:"D"RegExp.$4;//输出:"E"[url=][/url]

这样就可以很明白的看出分组的嵌套关系了

总结来说:大的分组中存在小的分组时,小的分组是排在该大分组后面的分组,以此类推
------------------------------------------------------------------------------------------------------------------------------
第二部分
这部分主要讲解类似于"\1"这个东西的用法

分组匹配之反向引用

语法
元字符  \1~\9  作用:用来表示前面以匹配的字符或分组的一个引用

用法示例
上面说的可能有些拗口,下面给一个例子:

[url=][/url]
//一般情况,当我们想匹配任意两个相同的字符(复杂一点就是两个相同的分组)时,往往可以借助下面的写法//说明://(\w)用来匹配任何除了换行和制表符的字符, 而\1是对(\w)的一个引用, 所以你可以理解成: (\w)\1 就是(\w)(\w)//但是,//(\w)\1 和 (\w)(\w)的不同之处在于,  (\w)(\w)表示任意两个连续的字符, 比如Ac, MM, K9, 都可以,// 但(\w)\1只能是AA, CC, 99 这样连续相同的字符//所以, 你可以这样理解, \1 是对(\w)的一个实例化引用, 当(\w) 匹配到A时, \1 被表达成A, 当(\w)匹配9时, \1 被表示成9//说了这么多, 可能有些废话, 下面这个例子就很好理解了var str = "AA Am 99";var reg = /(\w)\1/g;str.match(reg);//输出: ["AA", "99"][url=][/url]


所以, 参照上边我所引用的文章中给出的 "关键字搜索高亮显示的正则表达用法" 的例子, 我给出自己改进的小的DEMO
虽然这个DEMO没有用到任何的关于反向引用的知识点::>_<::
[url=][/url]
//测试环境        Chrome浏览器var key = "keywords";//搜索的关键字var text = " I am a text, and I have a keywords before this";//待匹配的文本var reg = new RegExp("("+key+")","g");text.replace(reg,"<span style='color:red'>$1</span>");//






上一篇:大数据BI工具Tableau安装与使用
下一篇:MySQL自定义函数用法详解-复合结构自定义变量/流程控制
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

icitu.com 信息谷-icit软硬件产品营销与行业智慧化解决方案实施供需对接空间,信息人家园-信息人之间互助互惠互利的资源整合空间,icit人团结起来帮助人们沟通与建设,icit unite to help people communicating&constructing。
0512-68181818
关注我们
  • 访问移动手机版
  • 官方微信公众号

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc. 优康设计 ( 苏ICP备10066271号-2 )|网站地图