[轉載]JavaScript – Regex

來源:互聯網
上載者:User
JavaScript - Regex 
    Regex(regular expression)對象包含一個Regex模式(pattern)。它具有用Regex模式去匹配或代替一個串(string)中特定字元(或字元集合)的屬性(properties)和方法(methods)。

    Regex建構函式: new RegExp(“pattern“[,“flags“]);
    參數說明:
    pattern -- 一個Regex文本
    flags -- 如果存在,將是以下值:
    g: 全域匹配
    i: 忽略大小寫
    gi: 以上組合

    在建構函式中,一些特殊字元需要進行轉意(在特殊字元前加“\“)。Regex中的特殊字元:
    字元  含意
    \ 轉意,即通常在“\“後面的字元不按原來意義解釋,如/b/匹配字元“b“,當b前面加了反斜杆後/\b/,轉意為

    匹配一個單詞的邊界。
    -或-
    對Regex功能字元的還原,如“*“匹配它前面元字元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]。


    說了這麼多了,我們來看一些Regex的實際應用的例子:
    HTML代碼的屏蔽
     function mask_HTMLCode(strInput) {
       var myReg = /〈(\w+)〉/;
       return strInput.replace(myReg, “〈$1〉“);
     }
    E-mail地址驗證:
     function test_email(strEmail) {
      var myReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/;
      if(myReg.test(strEmail)) return true;
      return false;
     }


    Regex對象的屬性及方法:
      預定義的Regex擁有有以下靜態屬性:input, multiline, lastMatch, lastParen, leftContext,

    rightContext和$1到$9。其中input和multiline可以預設定。其他屬性的值在執行過exec或test方法後被根據

    不同條件賦以不同的值。許多屬性同時擁有長和短(perl風格)的兩個名字,並且,這兩個名字指向同一個值。(

    JavaScript類比perl的Regex)

    Regex對象的屬性:
    屬性 含義
    $1$9 如果它(們)存在,是匹配到的子串
    $_ 參見input
    $* 參見multiline
    $& 參見lastMatch
    $+ 參見lastParen
    $` 參見leftContext
    $’’          參見rightContext
    constructor     建立一個對象的一個特殊的函數原型
    global        是否在整個串中匹配(bool型)
    ignoreCase     匹配時是否忽略大小寫(bool型)
    input        被匹配的串
    lastIndex      最後一次匹配的索引
    lastParen      最後一個括弧括起來的子串
    leftContext     最近一次匹配以左的子串
    multiline      是否進行多行匹配(bool型)
    prototype      允許附加屬性給對象
    rightContext    最近一次匹配以右的子串
    source        Regex模式
    lastIndex      最後一次匹配的索引

    Regex對象的方法:
    方法 含義
    compile       Regex比較
    exec        執行尋找
    test        進行匹配
    toSource      返回特定對象的定義(literal

    representing),其值可用來建立一個新的對象。重載Object.toSource方法得到的。
    toString      返回特定對象的串。重載Object.toString方法得到的。
    valueOf       返回特定對象的原始值。重載Object.valueOf方法得到


    例子:
    〈script language = “JavaScript“〉
    var myReg = /(w+)s(w+)/;
    var str  = “John Smith“;
    var newstr = str.replace(myReg, “$2, $1“);
    document.write(newstr);
    〈/script〉
    將輸出“Smith, John“  

 

 

onkeyup="this.value=this.value.replace(/[^0-9\+]/g,'')" onafterpaste="this.value=this.value.replace(/[^0-9\+]/g,'')"

function checkFloat(){
var result=true;
alert(event.keyCode);
result = (event.keyCode == 9 ||event.keyCode == 45 ||
event.keyCode == 46 || event.keyCode == 107 ||
event.keyCode == 37 ||
event.keyCode == 39 || (event.keyCode == 187 && event.shiftKey == true) ||
(event.ctrlKey && (vent.keyCode == 67 || vent.keyCode == 86)) ||
event.keyCode == 8 ||
event.keyCode == 110 ||
event.keyCode == 190 ||
(event.keyCode>=96 && event.keyCode<=105) ||
(event.keyCode>=48 && event.keyCode<=57));
event.returnValue=result;
}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.