zoukankan      html  css  js  c++  java
  • 关于正则表达式

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

    实例说明:

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

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


     

  • 相关阅读:
    十一月计划
    归并排序+例题
    今年暑假不AC(简单贪心)
    路障(BFS)
    堆优化版Dijkstra模板
    十月计划
    Find a way(BFS)
    Prime Path(BFS)
    Find The Multiple
    k8s中node节点资源不足
  • 原文地址:https://www.cnblogs.com/riskyer/p/3275757.html
Copyright © 2011-2022 走看看