[js]正则表达式的用法总结

js正则式的特殊字符

\ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。 

对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*"。

^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"

$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A"

* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa

+ 匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa

? 匹配前面元字符0次或1次,/ba*/将匹配b,ba

(x) 匹配x保存x在名为$1…$9的变量中

x|y 匹配x或y

{n} 精确匹配n次

{n,}         匹配n次以上

{n,m}         匹配n-m次

[xyz]         字符集(character set),匹配这个集合中的任一一个字符(或元字符)

[^xyz]         不匹配这个集合中的任何一个字符

[\b]         匹配一个退格符

\b 匹配一个单词的边界

\B 匹配一个单词的非边界

\cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M

\d 匹配一个字数字符,/\d/ = /[0-9]/

\D 匹配一个非字数字符,/\D/ = /[^0-9]/

\n 匹配一个换行符

\r 匹配一个回车符

\s 匹配一个空白字符,包括\n,\r,\f,\t,\v等

\S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/

\t 匹配一个制表符

\v 匹配一个重直制表符

\w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配"$5.98"中的5,等于[a-zA-Z0-9]

\W 匹配一个不可以组成单词的字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]

js正则的修正符

RegExp构造函数第一个参数为正则表达式的文本内容,而第一个参数则为可选项标志.标志可以组合使用 

•g (全文查找) 

•i (忽略大小写) 

•m (多行查找) 

var re = new RegExp("a","gi");//匹配所有的a或A

Perl风格 

var re = /a/gi;

js正则式的用法

javascript 正则对象创建 和用法

声明javascript 正则表达式    

var reCat = new RegExp("cat");

也可以这样声明:

var reCat = /cat/;      //Perl 风格   (推荐)

最常用的 test exec match search  replace  split 6个方法

   1) test  检查指定的字符串是否存在

       var data = "123123";

       var reCat = /123/gi;

       alert(reCat.test(data));  //true     

       //检查字符是否存在  g 继续往下走  i 不区分大小写

   2) exec 返回查询值

       var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";

       var reCat = /cat/i;

       alert(reCat.exec(data));  //Cat

     3)match  得到查询数组

       var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";

       var reCat = /cat/gi;

       var arrMactches = data.match(reCat)

       for (var i=0;i < arrMactches.length ; i++)

       {

            alert(arrMactches[i]);   //Cat  cat

       }

     4) search  返回搜索位置  类似于indexof

       var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";

       var reCat = /cat/gi;

       alert(data.search(reCat));  //23

    5) replace  替换字符  利用正则替换

       var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";

       var reCat = /cat/gi;

       alert(data.replace(reCat,"libinqq"));

    6)split   利用正则分割数组

       var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";

       var reCat = //,/;

       var arrdata = data.split(reCat);

       for (var i = 0; i < arrdata.length; i++)

       {

            alert(arrdata[i]);

       }

简单类、负向类、范围类和组合类

 简单类

var data = "1libinqq,2libinqq,3libinqq,4libinqq";
var reCat = /[123]libinqq/gi;
var arrdata = data.match(reCat);
for (var i = 0; i < arrdata.length; i++)
{
     alert(arrdata[i]);  // 1libinqq 2libinqq  3libinqq
 }

负向类

var data = "alibinqq,1libinqq,2libinqq,3libinqq,4libinqq";  ///u0062cf
var reCat = /[^a123]libinqq/gi;
var arrdata = data.match(reCat);
for (var i = 0; i < arrdata.length; i++)
{
     alert(arrdata[i]);  //4libinqq
}

范围类

 var data = "libinqq1,libinqq2,libinqq3,libinqq4,libinqq5";  ///u0062cf
 var reCat = /libinqq[2-3]/gi;
 var arrdata = data.match(reCat);
 for (var i = 0; i < arrdata.length; i++)
 {
     alert(arrdata[i]);   // libinqq2  libinqq3
 }

组合类

var data = "a,b,c,w,1,2,3,5";  ///u0062cf
var reCat = /[a-q1-4/n]/gi;
var arrdata = data.match(reCat);
for (var i = 0; i < arrdata.length; i++)
{
     alert(arrdata[i]);  // a b c 1 2 3
}

总结

这篇文章主要讲了javascript的正则表达式的定义,和具体的使用方法。然后又讲了javascript正则的一些特殊的复合类的示例代码,大家可以自己测试下。

无论是做Web程序开发,还是写Web网站,都离不开javascript代码的编写,如果需要做某些形式的验证,正则表达式也是必不可少。这里留存记录,以备今后查找。大家也好好保留吧。

分享到:更多 ()

抢沙发

评论前必须登录!