理解RegExp对象

创建一个RegExp对象后,把它应用到某个字符串上面。下面看几个常用的方法:

1、test(),如果给定字符串(只有一个参数)匹配这个模式,它就返回true,否则返回false。例如:

<script type="text/javascript">
	var sToMatch = "cat";
	var reCat = new RegExp("cat");
	alert(reCat.test(sToMatch));
</script>
如果模式在字符串中出现一次,就会认为是一个匹配,就会返回true。

2、exec(),有一个字符串参数,返回一个数组。数组的第一个条目是第一个匹配,其他的是反向引用。例如:

<script type="text/javascript">
	sToMatch = "a bat, a fAt, a cat";
	reCat = new RegExp("at", "gi");
	var arrMatches = reCat.exec(sToMatch);
	alert(arrMatches.length);
</script>
3、String的match(),它会返回一个包含在字符串数组中的所有匹配的数组。这个方法调用String对象,同时传给它一个RegExp对象:

<script type="text/javascript">
	var x;
	var sToMatch = "a bat, a fAt, a cat";
	var reCat = new RegExp("at", "gi");
	var arrStringMatches = sToMatch.match(reCat);
	alert(arrStringMatches.length);
	for(x in arrStringMatches){
		document.write(x + ": " + arrStringMatches[x] + "<br/>");
	}
</script>
4、search(),其行为与indexOf()类似,但是search使用一个RexExp对象而非仅仅一个字符串。该方法返回在字符串中出现的一个匹配的位置

<script type="text/javascript">
	var x;
	var sToMatch = "a bat, a fAt, a cat";
	var reCat = new RegExp("at", "gi");
	alert(sToMatch.search(reCat));
</script>
5、replace(),用另一个字符串(第二个参数)来替换某个字串(第一个参数)的所有匹配。例如:

<script type="text/javascript">
	var sToChange = "The sky is red, red";
	var reRed = new RegExp("red", "g");
	var sResultText = sToChange.replace(reRed, function(sMatch){
		return "blue";
	});
	var sResultText1 = sToChange.replace(reRed, "blue");
	alert(sResultText);
	alert(sResultText1);
</script>
6、split(),它可以将字符串分割成一系列子串并通过一个数组将他们返回,例如:

<script type="text/javascript">
	var sColors = "red, blue, yellow, green";
	var eeComma = new RegExp("\,");
	var arrColors = sColors.split(eeComma);
	alert(arrColors.length);
	for(x in arrColors){
		document.write(x + ": " + arrColors[x] + "<br/>");
	}
</script>

下面来看一下RegExp对象的一些实例属性:

Global

布尔值,表示g(全局选项)是否已经设置

ignoreCase

布尔值,表示i(忽略大小写选项)是否已经设置

lastIndex

整数,代表下次匹配将会从哪个位置开始(只有当使用exec或test函数才会填入,否则为0)

Multiline

布尔值,表示m(多行模式选项)是否已经设置

Source

正则表达式的源字符串形式


<script type="text/javascript">
	var reTest = /[ba]*/i;
	alert(reTest.global);
	alert(reTest.ignoreCase);
	alert(reTest.multiline);
	alert(reTest.source);
	
	var sToMatch = "bbq is short for barbeque";
	var reB = /b/g;
	reB.exec(sToMatch)
	alert(reB.lastIndex);
	reB.exec(sToMatch)
	alert(reB.lastIndex);
	reB.exec(sToMatch)
	alert(reB.lastIndex);
	reB.exec(sToMatch)
	alert(reB.lastIndex);
</script>

静态的RegExp属性对所有的正则表达式都有效。这些属性也都是与众不同的,因为他们都有两个名字:一个复杂名字和一个以美元符号开头的简短名字:

长名

短名

描述

Input

$_

最后用于匹配的字符串(传递给exec或test的字符串)

lastMatch

$&

最后匹配的字符

lastParen

$+

最后匹配的分组

leftContext

&`

在上次匹配的前面的字串

Multiline

$*

用于指定是否所有的表达式都使用多行模式的布尔值

rightContext

$’

在上次匹配之后的字串


<script type="text/javascript">
	<!--静态属性
	var sToMatch = "this has been a short , short summer";
	var reShort = /(s)hort/g;
	reShort.test(sToMatch);
	alert(RegExp.input);
	alert(RegExp.leftContext);
	alert(RegExp.rightContext);
	alert(RegExp.lastMatch);
	alert(RegExp.lastParen);
	<!--注意每次执行exec或test时,所有的属性(除了multiline外)都会被重新设置
</script>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值