javaScript正则——RegExp:

RegExp有个test()方法、如果给定字符串(只有一个参数)匹配这个模式、它就返回true、否则返回false。
正则表达式中/i,/g,/ig,/gi,/m的区别和含义
/i (忽略大小写)
/g (全文查找出现的所有匹配字符)
/m (多行查找)
/gi(全文查找、忽略大小写)
/ig(全文查找、忽略大小写)

  1. var str = "jfkd@s,laj@fd,safd@saf,ds@";       
  2. var res = /@/gi;  //全文查找@   
  3. alert(res.test(str));   //输出:true 

exec()方法、有一个字符串参数、返回一个数组。数组的第一个条目是第一个匹配、其它的是反向引用。

  1. //aStr只包含第一个实例、就是"jfkd@sla"中的@ 
  2. var aStr = res.exec(str); 
  3. alert(aStr); 

String对象有个match()方法、它会返回一个包含在字符串中的所有匹配的数组。

  1. alert(str.match(res)); //输出:@,@,@,@ 

另一个叫做seartch()的字符串方法的行为与indexOf()有些类似、但是它使用一个RegExp对象而非仅仅一个子字符串。Search()方法返回在字符串中出现的一个匹配的位置。

  1. //它从字符的索引[0]的位置开始查找 
  2. alert(str.search(res));  //输出:4 

replace():

  1. /** 
  2.          * replace()、它可以用另一个字符串(第二个参数)来替换某个子串(第一个参数)的所有匹配 
  3.          */ 
  4.         var sRep = str.replace("@","瘦马");   
  5.         alert(sRep);  //输出:jfkd瘦马s,laj@fd,safd@saf,ds@       
  6.          
  7.         /** 
  8.          * 也可以将正则表达式当作第一个参数 
  9.          */ 
  10.         alert(str.replace(res,"瘦马"));  //输出:jfkd瘦马s,laj瘦马fd,safd瘦马saf,ds瘦马      
  11.          
  12.          
  13.         /** 
  14.          * 也可以指定一个函数作为replace的第二个参数 
  15.          */ 
  16.         var sFun = str.replace(res,function(){ 
  17.             return "瘦马";     
  18.         }); 
  19.         alert("---------------"+sFun); //输出:jfkd瘦马s,laj瘦马fd,safd瘦马saf,ds瘦马 
  1. /** 
  2.          * split() 
  3.          */     
  4.         alert(str.split("@"));   
  5.         //使用正则表达式、也可以实现相同功能 
  6.         alert(str.split(/@/));  
  1. <!-- 一个replace方法处理的只能输入数字的示例 --> 
  2.    <input size="25" value="" id="maxnum" name="tbmeetroom.maxnum" 
  3.                    onkeyup="this.value=this.value.replace(/\D/g,'')"    
  4.                     onafterpaste="this.value=this.value.replace(/\D/g,'')" />  

表达式中所有元字符必须进行转义(在前面加上反斜杠)才能正确匹配。元字符是正则表达式语法的一部分、下面是正则表达式用到的所有元字符:( [ { \ ^ $ | ) ? * + .因此想要匹配一个问号、则:var reTest = /\?/;或者这样表示:var reTest = new RegExp("\\?");第二行使用两个反斜杠、称之为双重转义。

字符类:

  1. <script type="text/javascript"
  2.         //简单类——匹配"bat"、"cat"和"fat"  
  3.         var sToMatch = "a bat, a Cat, a fAt baT, a faT cat"
  4.         var reBatCatRat = /[bcf]at/gi;  
  5.         var arrMatches = sToMatch.match(reBatCatRat); 
  6.         //alert(arrMatches);   
  7.          
  8.         /** 
  9.          * 负向类——他可以指定要排除的字符。 
  10.          * 例如、要匹配除了a和b的所有字符、那么这个字符类就是[^ab]。 
  11.          * 脱字符号(^)告诉正则表达式字符不能匹配后面跟着的字符。 
  12.          * 前面的例子、如果只想获取包含at但不能以b或c开头单词: 
  13.          */ 
  14.         reBatCatRat = /[^bc]at/gi; 
  15.         arrMatches = sToMatch.match(reBatCatRat); 
  16.         //alert(arrMatches);    
  17.          
  18.         /** 
  19.          * 范围类——要匹配所有的字母表中的字符、但是又实在不想逐个输入、    
  20.          * 可以使用:[a-z]。里面的横线(-)、它的意思是"从什么到什么"(a到z)   
  21.          * 这里a-z仅仅匹配了小写字母、除非使用i选项来指明不区分大小写 
  22.          * 如果要仅仅匹配大写字母则使用:[A-Z] 
  23.          * 取得以1、2、3、4结尾、number开头的字符 
  24.          */ 
  25.         sToMatch = "number1,number2,number3,number4,number5,number6,number7,number8,number9";   
  26.         reBatCatRat = /number[1-4]/gi;   //或者使用负向类 /number[^5-9]/gi     
  27.         arrMatches = sToMatch.match(reBatCatRat);   
  28.         //alert(arrMatches);     
  29.          
  30.         /** 
  31.          * 组合类——由其他的类组合而成的字符类。 
  32.          * 假设要匹配所有从a~m的字母以及从1-4的数字、以及一个换行符 
  33.          * [a-m1-4\n]  
  34.          * javaScript/ECMAScript不支持某些其他正则表达式实现中的联合类和交叉类。这意味着你不能有类似 
  35.          * [a-m[p-z]]或者[a-m[^b-e]]这类的模式出现  
  36.          */ 
  37.           
  38.           
  39.         /** 
  40.          * 预定义类 
  41.             代码         等同于                      匹配 
  42.             .           [^\n\r]                 除了换行和回车之外的任意字符 
  43.             \d          [0-9]                   数字 
  44.             \D          [^0-9]                  非数字字符 
  45.             \s          [ \t\n\x0B\f\r]         空白字符 
  46.             \S          [^ \t\n\x0B\f\r]        非空白字符 
  47.             \w          [a-zA-Z_0-9]            单词字符(所有的字母、所有的数字和下划线) 
  48.             \W          [^a-zA-Z_0-9]           非单词字符 
  49.              
  50.             想匹配三个数字 
  51.          */ 
  52.         sToMatch = "325 fds2";   
  53.         reBatCatRat = /\d\d\d/;   //或者使用负向类 /number[^5-9]/gi     
  54.         alert(reBatCatRat.test(sToMatch)); 
  55.     </script>