关于正则表达式

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

实例说明:

   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*sd+sd+/;
	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表示任何数字或字母,包括下划线

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


 

原文地址:https://www.cnblogs.com/riskyer/p/3275757.html