jsRegex的使用詳解

來源:互聯網
上載者:User

js中的Regex比起C#中的Regex要弱很多,但基本夠用了
1定義Regex
2關於驗證的三個這則運算式方法
3Regex式的逸出字元

1定義Regex
在js中定義Regex很簡單,有兩種方式,一種是通過建構函式,一種是通過//,也就是兩個斜杠。
例如
複製代碼 代碼如下:
  var   re =new RegExp("\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");

使用建構函式定義Regex,注意大小寫,負責就會不起作用。由於建構函式的參數是一個字串,也可以是兩個斜杠的方式定義,遇到一些特殊字元就需要使用\進行轉義
通過雙斜杠的方式定義同樣的Regex
複製代碼 代碼如下:
var   re =/\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;

複製代碼 代碼如下:
var re =new RegExp( /^\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/);

可以和建構函式達到同樣的效果,但仔細分析,發現,通過建構函式需要更多的逸出字元\

2關於驗證的三個Regex方法

使用Regex的主要有字串的方法match,Regex的方法exec,test
Regex方法test測試給定的字串是否滿足Regex,傳回值是bool類型的,只有真和假,如果只是單純的判斷,不需要其他的處理,可以使用尤其是驗證時。
複製代碼 代碼如下:
 function test(){ 
    var text="index.aspx?test=1&ww=2&www=3"; //   
      var   re =/\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
    //  var   re =new RegExp("\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");
        var result=  re.test(text);
     if(result)
     {
        alert("ok");  
     }else
     {
      alert("err"); 
     }                

      }

Regex方法exec測試給定的字串是否滿足Regex,返回匹配到的字串,如果沒有匹配的則返回null,和test基本一致,如果需要擷取匹配的各個子字串,可以使用下標的方式,把上邊的test的例子可以改寫如下
複製代碼 代碼如下:
 function test(){ 
   var text="index.aspx?test=1&ww=2&www=3";
            var   re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
   //  var   re =new RegExp( "\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");
        var result=  re.exec(text); 
      if(result)
     {
           alert("ok"); 
                          alert(result);  // 是?test=1&ww=2&www=3,ww=2&    
            alert(result[0]+",0");//是?test=1&ww=2&www=3
     alert(result[1]+",1");//是ww=2&    
     }else
     {
      alert("err"); 
     }  

      }

match其實是字串的方法,但參數確是一個Regex,把上邊的例子改寫後,如下
複製代碼 代碼如下:
 function test(){ 
    var text="index.aspx?test=1&ww=234"; //
          var   re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
     //   var   re2 = "(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}"
     var result= text.match(re);
       if(result)
         {
                           alert(result);//?test=1&ww=234,test=1&       
              alert(result[0]+",0");//?test=1&ww=234
        alert(result[1]+",1");//test=1&
   }else
          {
          alert("err"); 
         } 
      }

其實字串類還有多個函數可以傳遞Regex,split,search,replace等但這些方法已經不適合驗證了。
複製代碼 代碼如下:
 function test(){ 
    var text="index.aspx?test=1&ww=234"; //
          var   re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
     //   var   re2 = "(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}"
     var result= text.split(re);    
                  alert(result);       
           alert(result[0]+",0");
        alert(result[1]+",1");    
      }

3Regex式的逸出字元
在Regex中會經常出現逸出字元,例如問號?在Regex中有特殊的含義,如果需要匹配問號?就需要轉義,使用逸出字元反斜線\
如下兩個都是匹配問號開頭的一段字串
複製代碼 代碼如下:
 function test(){ 
   var text="?test=1&ww=2&www=3";
           var   re = /^\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;//  \?表示配置問號?
   //  var   re =new RegExp( "^\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");//  \\?表示配置問號?
        var result=  re.exec(text); 
      if(result)
     {
           alert("ok"); 
                 alert(result);       
           alert(result[0]+",0");
        alert(result[1]+",1");    
     }else
     {
      alert("err"); 
     }  

      }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.