关于正则表达式

正则表达式是由字符串所组成的表达式,用于匹配、替换或者查找特定的字符串。

实例说明:

   var searchPattern = new RegExp('s+');

等价于   var searchPattern = /s+/;

表达式中的加号表示字符s必须在字符串中显示1次以上。而字符串(/s+/)中的斜杠表示这是一个正则表达式,不是其它类的对象。

 

RegExp对象中只有两个实现方法:test和exec。test方法将判断以参数传入的字符串是否与正则表达式匹配。

如:var re = /JavaScript rules/;

   var str = "JavaScript rules";

   if(re.test(str)){alert("匹配");}

正则表达式的匹配过程是区分大小写的,如果表达式是/javascript rules/,那么结果是不匹配。如果希望不区分大小写进行匹配,那么可以在正则表达式后面添加字符i。

如下:var re = /Javascript rules/i;

i选项是正则表达式匹配的标识符,用来强制匹配过程忽略大小写。此外还有全局匹配g标识,多行匹配的m标识。

全局匹配是查找与正则表达式匹配的所有字符,而忽略正则表达式的位置。如果不适用全局匹配选项,那么只会返回第一个匹配项。多行匹配选项m可以使用与行相关的字符,例如^表示一行的开始,$表示一行的结束,以便在多行的字符串中进行匹配。如果是RegExp对象实例,那么第二个参数表示匹配选项。

如:var searchPattern = new RegExp('s+','g');

实例:

<script text="text/javascript">
	var re = new RegExp("JS*","ig");
	var str = "cfdsJS *(&YJSjs 888JS";
	var resultArray = re.exec(str);

	while(resultArray){
		document.writeln(resultArray[0]);
		document.writeln(" next match starts at "+ re.lastIndex +"<br/>");
		resultArray = re.exec(str);
	}
</script>

运行结果:

分析:正则表达式首写是字母J,接着是任何数量的字母S.由于使用了选项i,所以匹配过程中忽略大小写,因此也会查找到js字符串。并且由于设置了选项g,RegExp中lastIndex属性会设置为匹配字符中最后一个字符的下一个位置,所以每次exec调用都会查找下一个匹配。该实例中共查找到了4次匹配,当没有匹配时,返回的为null。

exec方法返回一个数组,但是数组元素并不是所有的匹配项,而是当前匹配项和所有带圆括号的字符串。如果在表达式中使用圆括号引用正则表达式的某部分,那么匹配的时候,这些括号所匹配的字符串也会体现在返回的数组中。

实例:

var re = /(ds)+(j+s)/ig;
	var str = "cfdsJS *(&dsjjjsYJSjs 888dsdsJS)";
	var resultArray = re.exec(str);
	while(resultArray){
		document.writeln(resultArray[0]);
		document.writeln("next match starts at "+re.lastIndex+"<br/>");
		for(var i = 1; i < resultArray.length; i++){
			document.writeln("substring of "+resultArray[i]+"<br/>");
		}
		document.writeln("<br/>");
		resultArray = re.exec(str);
	}


运行结果:

 

正则表达式应用

反斜杠,也称转义符,用来对字符进行转义。两种用途:①\s表示特殊字符(空格、制表符、换行符)②\+表示+,将特殊符转换成一般符号。

实例:

<script text="text/javascript">
	function matchString(){
		var regExp = /\s\*/g;
		var str = "This *is *a *test *string";
		var resultString = str.replace(regExp,'-');
		alert(resultString);
	}
</script>
<body onload = "matchString()">

</body>


运行结果:

 

正则表达式中关于匹配字符出现次数的4种字符:星号(*)表示字符出现零次或多次;加号(+)表示字符出现一次或多次;问号(?)表示字符出现零次或一次;点号(.)表示字符只出现一次。

 

实例:

<script text="text/javascript">
	var regExp = /:\D*\s\d+\s\d+/;
	var str = "This is a date:March 12 2009";
	var resultString = str.match(regExp);
	alert("Date"+resultString);
</script>


结果:

分析:该正则表达式的第一个字符是冒号,接着是反斜杠和大写字母D,即\D,用来表示查找任何非数字符号;接着的星号表示匹配任何数量的非数字符号。接下来的部分是空格符(\s),然后是\d。与\D不同的是,小写的\d表示只匹配数字。加号表匹配一个或多个数字。接着又是一个空格符,以及又一个\d+。

\D等效于[^0-9]

\d等效于[0-9]

匹配大小写字符:[A-Za-z]

\w表示任何数字或字母,包括下划线

^和$可以表示一行的开始和结束

 

 


 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值