JS正则表达式获取分组内容的方法详解

作者:函数茶馆时间:2026-10-27 17:31:49浏览:156

本文详细介绍JavaScript中正则表达式获取分组内容的多种方法。重点解析利用RegExp.exec()配合while循环实现多次匹配的技巧,对比match()方法的局限性。同时系统梳理RegExp对象的静态属性(如$1-$9、input等)及核心方法(exec、test、compile等),并通过字符串替换示例展示实际应用,帮助开发者深入理解正则在JS中的完整工作机制。

JS正则表达式多次匹配与分组提取

在JavaScript中,若需支持对正则表达式的多次匹配,可采用以下实现方式:

具体代码实现如下:

var testStr = "now test001 test002";
var re = /test(\d+)/ig;
var r = "";
while(r = re.exec(testStr)) {
alert(r[0] + " " + r[1]);
}  

此外,也可以使用testStr.match(re)方法,但需注意该方式下不能设置全局匹配标志g,且仅能获取第一个匹配结果。

RegExp对象属性与方法详解

另外补充备忘信息如下:

正则表达式对象具备以下静态属性:预定义的正则表达式拥有input、multiline、lastMatch、lastParen、leftContext、rightContext以及$1到$9等属性。

rightContext和$1到$9。其中input和multiline可以预设置。其他属性的值在执行过exec或test方法后被根据

许多属性同时拥有长名称和短名称(Perl风格)两种形式,且这两个名称指向同一个值(JavaScript模拟Perl的正则表达式行为)。

正则表达式对象的具体属性含义如下: $1...$9:若存在,表示匹配到的子串。 $_:参见input属性。 $*:参见multiline属性。 $&:参见lastMatch属性。 $+:参见lastParen属性。 $`:参见leftContext属性。 $'':参见rightContext属性。 constructor:用于创建对象特殊函数的原型。 global:布尔值,表示是否在整个字符串中进行全局匹配。 ignoreCase:布尔值,表示匹配时是否忽略大小写。 input:被匹配的原始字符串。 lastIndex:最后一次匹配的索引位置。 lastParen:最后一个括号括起来的子串。 leftContext:最近一次匹配左侧的子串。 multiline:布尔值,表示是否进行多行匹配。 prototype:允许给对象附加属性。 rightContext:最近一次匹配右侧的子串。 source:正则表达式的模式字符串。 lastIndex:最后一次匹配的索引位置。

正则表达式对象的主要方法及其含义如下: compile:重新定义正则表达式的内容。 exec:执行查找操作,可利用while循环进行多次查找。 test:进行匹配测试。 toSource:返回特定对象的定义(literal representing),其值可用于创建新对象,由重载Object.toSource方法得到。 toString:返回特定对象的字符串表示,由重载Object.toString方法得到。 valueOf:返回特定对象的原始值,由重载Object.valueOf方法得到。 示例代码如下:

具体代码实现如下:

<script language="JavaScript">
var myReg = /(w+)s(w+)/;
var str = "John Smith";
var newstr = str.replace(myReg, "$2, $1");
document.write(newstr);
</script>

最终输出结果为"Smith, John"。

作者最新文章