js 正则表达式
1首选正则表达式的形式有两种
(1).第一种 new RegExp("ada","igm");其中"ada"表示要匹配的形式,"igm"表示的是i(忽略大小写),g(全局匹配),m(多行匹配)。
(2).第二种 /adajsk/ig;
2.正则的两种校验方法:test,exec。注意这两种方法是正则的方法
<script> var pattern=/box/ig; var string=this is a Box ,this is a tom; pattern.test(string); </script>
结果返回true或者false;且注意只要匹配到了就行,同理exec也是一样,但是需要注意exec返回值是第一次匹配到的元素,上述用exec会返回Box;如果我们使用了分组的话,会返回一个数组,数组中第一个值是匹配到的内容,第二个是分组中的值
例如
<script> var pattern=/8(.*?)7/g; var string="8abc7def8ghi7"; alert(pattern.exec(string)/; </script>
首先只会校验最开始符合的那个,也就是"8abc7";然后返回值是一个数组,数组第一个值是"8abc7"第二个数是abc(分组中的值);
(3).同理对于字符串也有几个方法(match,replace,search,split);
首先来讲一下match,这个函数会匹配到所有的满足的字符串,然后放到一个数组中返回出来
<script> var pattern=/8(.*?)7/ig; var string="8abc7dec8efg7"; alert(string.match(pattern);
返回8abc7,8efg7。
2).replace函数将匹配到的字符串替换成其他字符串。
一般的情况下,我们都是讲匹配到的字符串转换成某一个字符串.
<script> var pattern=/8(.*?)7/g; var string="8abc7def8ghi7"; alert(string.replace(pattern,"1"); </script>
结果为"1def1".是将所有匹配到的都转换成"1";
这个地方我们要深挖一下了,如何将匹配到的字符串转化成其他不同的几样字符串呢?
例如
<script> var s=["1","2"]; var i=0; var pattern=/8(.*?)7/g; var string="8abc7def8ghi7"; alert(string.replace(pattern,function(){ return s[i++]; }); </script>
结果为"1def2";
其实replace函数内部是有一个循环的,每次找到一个符合要求的字符串,就执行后面的函数一下。所以可以用一个变量i来表示第几次找到。