详解JavaScript正则表达式之分组匹配及反向引用
网络编程 2021-07-04 21:04www.168986.cn编程入门
这篇文章主要介绍了详解JavaScript正则表达式之分组匹配及反向引用 的相关资料,需要的朋友可以参考下
语法
元字符(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引用
分组嵌套关系说明
上述代码也可以说明分组的嵌套关系
//测试环境 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"
这样就可以很明白的看出分组的嵌套关系了
来说大的分组中存在小的分组时,小的分组是排在该大分组后面的分组,以此类推
第二部分
这部分主要讲解类似于"\1"这个东西的用法
分组匹配之反向引用
语法
元字符 \1~\9 作用用来表示前面以匹配的字符或分组的一个引用
用法示例
参考文章[原]
上面说的可能有些拗口,狼蚁网站SEO优化给一个例子:
//一般情况,当我们想匹配任意两个相同的字符(复杂一点就是两个相同的分组)时,往往可以借助狼蚁网站SEO优化的写法 //说明 //(\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 //说了这么多, 可能有些废话, 狼蚁网站SEO优化这个例子就很好理解了 var str = "AA Am 99"; var reg = /(\w)\1/g; str.match(reg);//输出: ["AA", "99"]
所以, 参照上边我所引用的文章中给出的 "关键字搜索高亮显示的正则表达用法" 的例子, 我给出自己改进的小的DEMO
虽然这个DEMO没有用到任何的关于反向引用的知识点::>_<::
//测试环境 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>");//输出: " I am a text, and I have a <span style='color:red'>keywords</span> before this"
狼蚁网站SEO优化给大家详细介绍下正则表达式之反向引用
示例1
public static void main(String[] args) { String s="99-3933"; boolean b=Pattern.matches("([\\d])\\1[-]([3])\\1\\2{2}", s); System.out.println(b); }
反向引用,匹配重复的数字
([\d])====>\1
([3])====>\2
示例2
public class test { public static void main(String[] args) { String s="99-393399-3933"; boolean b=Pattern.matches("(([\\d])\\2[-]([3])\\2\\3{2})\\1", s); System.out.println(b); } }
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程