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来表示第几次找到。

 

posted @ 2016-03-06 21:13  秋天的故事  阅读(375)  评论(0编辑  收藏  举报