关于正则匹配问题

(1) *:匹配前面的子表达式0次或多次。

   例如:以下都将返回b,也就是说不管z后面有多少个连续的“o”,都将匹配 也就是相当于* 等价于{0,} 

var str = "z".replace(/zo*/,"b");
var str1 = "zo".replace(/zo*/,"b");
var str2 = "zoo".replace(/zo*/,"b");
var str3 = "zooo".replace(/zo*/,"b");
alert(str); //b
alert(str1); //b
alert(str2); //b
alert(str3); //b

数字的用法,[0-9] 代表所有数字;就是说可以匹配连续的数字 

var str = "123456";
var newstr = str.replace(/[0-9]*/,"www");
alert(newstr);
//www

不是连续的,将返回连续的部分

 

var str = "1234b56";
var newstr = str.replace(/[0-9]*/, "www");

alert(newstr); //wwwb56

 

 

(2)+:匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。

         和 “ * ” 同理,但是必须要至少有一个匹配项

 

(3)? : 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。

var str = "do";
var str1 = "does";
var str2 = "doessdafasdf";
var newstr = str.replace(/do(es)?/, "www");
var newstr1 = str1.replace(/do(es)?/, "www");
var newstr2 = str2.replace(/do(es)?/, "www");
alert(newstr); //www
alert(newstr1); //www
alert(newstr2); //wwwsdafasdf

(4) {n}:n 是一个非负整数。匹配确定的 n 次。

    例如:'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。

   

var str = "Bob";
var str1 = "Boob";
var str2 = "Booob";
var newstr = str.replace(/o{2}/, "www");
var newstr1 = str1.replace(/o{2}/, "www");
var newstr2 = str2.replace(/o{3}/, "www");
alert(newstr); //Bob
alert(newstr1); //Bwwwb
alert(newstr2); //Bwwwb

  数字的应用

var str = "12345";
var newstr = str.replace(/[0-9]{3}/,"www");

alert(newstr); //www45

 

(5){n,}:n 是一个非负整数。至少匹配n 次。

        例如: 'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'    

var str = "Bob";
var str1 = "Boob";
var str2 = "Booob";
var newstr = str.replace(/o{1,}/, "www");
var newstr1 = str1.replace(/o{1,}/, "www");
var newstr2 = str2.replace(/o{1,}/, "www");
alert(newstr); //Bwwwb
alert(newstr1); //Bwwwb
alert(newstr2); //Bwwwb

 

(6){n,m}:m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。

    原理同上,只是m 限制了要匹配的最大次数

 

posted @ 2016-10-29 09:45  yansen博客  阅读(209)  评论(0编辑  收藏  举报