JS编程建议——41:正确使用正则表达式引用

简介: 41:正确使用正则表达式引用

建议41:正确使用正则表达式引用
正则表达式在执行匹配运算时会自动把每个分组(子表达式)匹配的文本都存储在一个特殊的地方以备将来使用。这些存储在分组中的特殊值被称为反向引用。反向引用将遵循从左到右的顺序,根据表达式中左括号字符的顺序进行创建和编号。
var s = "abcdefghijklmn";
var r = /(a(b(c)))/;
var a = s.match(r); //["abc", "abc" , "bc" , "c"]
在这个分组匹配模式中,共产生了3个反向引用,第一个是“(a(b(c)))”,第二个是“(b(c))”,第三个是“(c)”。它们引用的匹配文本分别是字符串“abc”、“bc”和“c”。
反向引用在应用开发中主要有以下几种常规用法。
1)在正则表达式对象的test()方法,以及字符串对象的match()和search()等方法中使用。在这些方法中,反向引用的值可以从RegExp()构造函数中获得。例如:
var s = "abcdefghijklmn";
var r = /(w)(w)(w)/;
r.test(s);
alert(RegExp.$1); //第1个子表达式匹配的字符a
alert(RegExp.$2); //第2个子表达式匹配的字符b
alert(RegExp.$3); //第3个子表达式匹配的字符c
在正则表达式执行匹配测试后,所有子表达式匹配的文本都被分组存储在RegExp()构造函数的属性内,通过前缀符号$与正则表达式中子表达式的编号来引用这些临时属性,其中属性$1标识符指向第一个值引用,属性$2标识符指向第二个值引用,依此类推。
2)可以直接在定义分组的表达式中包含反向引用。这可以通过使用特殊转义序列(如l、2等)来实现。例如:
var s = "abcbcacba";
var r = /(w)(w)(w)231321/;
var b = r.test(s); // 验证正则表达式是否匹配该字符串
alert(b); //true
在上面的正则表达式中,“1”表示对第一个反向引用(w)所匹配的字符a的引用,“2”表示对第二个反向引用(w)所匹配的字符b的引用,“3”表示对第二个反向引用(w)所匹配的字符c的引用。
3)可以在字符串对象的replace()方法中使用。通过使用特殊字符序列$1、$2、$3等来实现。例如,在下面的示例中将颠倒相邻字母和数字的位置。
var s = "aa11bb22c3d4e5f6";
var r = /(w+?)(d+)/g;
var b = s.replace(r,"$2$1");
alert(b); //"11aa22bb3c 4d5e6f"
在这个示例中,正则表达式包括两个分组,第一个分组匹配任意连续的字母,第二个分组匹配任意连续的数字。在replace()方法的第二个参数中,$1表示对正则表达式中第一个子表达式匹配文本的引用,而$2表示对正则表达式中第二个子表达式匹配文本的引用,通过颠倒$1和$2标识符的位置即可实现字符串的颠倒以替换原字符串。

相关文章
|
1月前
|
前端开发 JavaScript
快乐编程之旅:了解这20道JavaScript手写题助力提升开发内力
快乐编程之旅:了解这20道JavaScript手写题助力提升开发内力
|
22天前
|
缓存 JavaScript 前端开发
精通JavaScript修饰器:超越传统编程范式的进阶技巧
在JavaScript中,修饰器(Decorator)是一种特殊的语法,用于修改类、方法或属性的行为。修饰器提供了一种简洁而灵活的方式来扩展和定制代码功能。本文将详细介绍JavaScript修饰器的概念、语法和应用场景,并提供相关的代码示例。
|
23天前
|
JavaScript 前端开发 安全
TypeScript:赋予JavaScript数据类型新的力量,提升编程效率!
TypeScript:扩展JavaScript数据类型,赋予编程更强大的表达能力!
|
22天前
|
存储 缓存 JavaScript
发掘JavaScript潜力:掌握高级技巧,成为JavaScript编程大师!
众所周知,JavaScript 是一种非常流行🔥的编程语言,它已经成为了网页开发的必备技能。但是,在我们从事JavaScript编程的时候,我们却没有完全发掘和利用它的全部潜力。在本文中,我们将分享一些高级的JavaScript技巧,希望帮助CSDN的小伙伴更好地理解和掌握JavaScript编程。
|
27天前
|
JavaScript
js如何去实现用正则表达式来判断一个值
js如何去实现用正则表达式来判断一个值
11 0
|
28天前
|
资源调度 JavaScript 前端开发
jc-datetime :JavaScript 日期时间实用编程
jc-datetime :JavaScript 日期时间实用编程
156 1
|
28天前
|
机器学习/深度学习 JavaScript 前端开发
JavaScript 正则表达式
JavaScript 正则表达式
91 0
|
1月前
|
存储 前端开发 JavaScript
深入理解 JavaScript 函数:提升编程技能的必备知识(下)
深入理解 JavaScript 函数:提升编程技能的必备知识(下)
深入理解 JavaScript 函数:提升编程技能的必备知识(下)
|
1月前
|
存储 前端开发 JavaScript
深入理解 JavaScript 函数:提升编程技能的必备知识(中)
深入理解 JavaScript 函数:提升编程技能的必备知识(中)
深入理解 JavaScript 函数:提升编程技能的必备知识(中)
|
1月前
|
存储 缓存 前端开发
深入理解 JavaScript 函数:提升编程技能的必备知识(上)
深入理解 JavaScript 函数:提升编程技能的必备知识(上)
深入理解 JavaScript 函数:提升编程技能的必备知识(上)

相关产品

  • 云迁移中心