<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    lqxue

    常用鏈接

    統計

    book

    tools

    最新評論

    JavaScript中的正則表達式

    正則表達式(regular expression)對象包含一個正則表達式模式(pattern)。它具有用正則表達式模式去匹配或代替一個串(string)中特定字符(或字符集合)的屬性(properties)和方法(methods)。 要為一個單獨的正則表達式添加屬性,可以使用正則表達式構造函數(constructor function),無論何時被調用的預設置的正則表達式擁有靜態的屬性(the predefined RegExp object has static properties that are set whenever any regular expression is used, 我不知道我翻得對不對,將原文列出,請自行翻譯)。
    • 創建:
      一個文本格式或正則表達式構造函數
      文本格式: /pattern/flags
      正則表達式構造函數: new RegExp("pattern"[,"flags"]);
    • 參數說明:
      pattern -- 一個正則表達式文本
      flags -- 如果存在,將是以下值:
      g: 全局匹配
      i: 忽略大小寫
      gi: 以上組合

    [注意] 文本格式的參數不用引號,而在用構造函數時的參數需要引號。如:/ab+c/i new RegExp("ab+c","i")是實現一樣的功能。在構造函數中,一些特殊字符需要進行轉意(在特殊字符前加""")。如:re = new RegExp("""w+")

    正則表達式中的特殊字符

    字符 含意
    "

    做為轉意,即通常在"""后面的字符不按原來意義解釋,如/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]。

    說了這么多了,我們來看一些正則表達式的實際應用的例子:

    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;
     }
    HTML代碼的屏蔽
     function mask_HTMLCode(strInput) {
       var myReg = /<("w+)>/;
       return strInput.replace(myReg, "&lt;$1&gt;");
     }


    正則表達式對象的屬性及方法
    預定義的正則表達式擁有有以下靜態屬性:input, multiline, lastMatch, lastParen, leftContext, rightContext和$1到$9。其中input和multiline可以預設置。其他屬性的值在執行過exec或test方法后被根據不同條件賦以不同的值。許多屬性同時擁有長和短(perl風格)的兩個名字,并且,這兩個名字指向同一個值。(JavaScript模擬perl的正則表達式)
    正則表達式對象的屬性
    屬性 含義
    $1...$9 如果它(們)存在,是匹配到的子串
    $_ 參見input
    $* 參見multiline
    $& 參見lastMatch
    $+ 參見lastParen
    $` 參見leftContext
    $'          參見rightContext
    constructor    創建一個對象的一個特殊的函數原型
    global       是否在整個串中匹配(bool型)
    ignoreCase     匹配時是否忽略大小寫(bool型)
    input        被匹配的串
    lastIndex     最后一次匹配的索引
    lastParen     最后一個括號括起來的子串
    leftContext    最近一次匹配以左的子串
    multiline     是否進行多行匹配(bool型)
    prototype     允許附加屬性給對象
    rightContext    最近一次匹配以右的子串
    source       正則表達式模式
    lastIndex     最后一次匹配的索引

    正則表達式對象的方法
    方法 含義
    compile      正則表達式比較
    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"


    〓簡介〓
    字符意義:對于字符,通常表示按字面意義,指出接著的字符為特殊字符,不作解釋。
    例如:/b/匹配字符'b',通過在b 前面加一個反斜杠,也就是/b/,則該字符變成特殊字符,表示匹配一個單詞的分界線?;蛘撸簩τ趲讉€字符,通常說明是特殊的,指出緊接著的字符不是特殊的,而應該按字面解釋。例如:*是一個特殊字符,匹配任意個字符(包括0個字符);例如:/a*/意味匹配0個或多個a。為了匹配字面上的*,在a前面加一個反斜杠;例如:/a*/匹配'a*'。

    〓正文〓
    字符
    意義:對于字符,通常表示按字面意義,指出接著的字符為特殊字符,不作解釋。
    例如:/b/匹配字符'b',通過在b 前面加一個反斜杠,也就是/b/,則該字符變成特殊字符,表示
    匹配一個單詞的分界線。
    或者:
    對于幾個字符,通常說明是特殊的,指出緊接著的字符不是特殊的,而應該按字面解釋。
    例如:*是一個特殊字符,匹配任意個字符(包括0個字符);例如:/a*/意味匹配0個或多個a。
    為了匹配字面上的*,在a前面加一個反斜杠;例如:/a*/匹配'a*'。

    字符^
    意義:表示匹配的字符必須在最前邊。
    例如:/^A/不匹配"an A,"中的'A',但匹配"An A."中最前面的'A'。

    字符$
    意義:與^類似,匹配最末的字符。
    例如:/t$/不匹配"eater"中的't',但匹配"eat"中的't'。

    字符*
    意義:匹配*前面的字符0次或n次。
    例如:/bo*/匹配"A ghost booooed"中的'boooo'或"A bird warbled"中的'b',但不匹配"A goat g
    runted"中的任何字符。

    字符+
    意義:匹配+號前面的字符1次或n次。等價于{1,}。
    例如:/a+/匹配"candy"中的'a'和"caaaaaaandy."中的所有'a'。

    字符?
    意義:匹配?前面的字符0次或1次。
    例如:/e?le?/匹配"angel"中的'el'和"angle."中的'le'。

    字符.
    意義:(小數點)匹配除換行符外的所有單個的字符。
    例如:/.n/匹配"nay, an apple is on the tree"中的'an'和'on',但不匹配'nay'。


    字符(x)
    意義:匹配'x'并記錄匹配的值。
    例如:/(foo)/匹配和記錄"foo bar."中的'foo'。匹配子串能被結果數組中的素[1], ..., [n] 返
    回,或被RegExp對象的屬性$1, ..., $9返回。

    字符x|y
    意義:匹配'x'或者'y'。
    例如:/green|red/匹配"green apple"中的'green'和"red apple."中的'red'。

    字符{n}
    意義:這里的n是一個正整數。匹配前面的n個字符。
    例如:/a{2}/不匹配"candy,"中的'a',但匹配"caandy," 中的所有'a'和"caaandy."中前面的兩個
    'a'。

    字符{n,}
    意義:這里的n是一個正整數。匹配至少n個前面的字符。
    例如:/a{2,}不匹配"candy"中的'a',但匹配"caandy"中的所有'a'和"caaaaaaandy."中的所有'a'

    字符{n,m}
    意義:這里的n和m都是正整數。匹配至少n個最多m個前面的字符。
    例如:/a{1,3}/不匹配"cndy"中的任何字符,但匹配 "candy,"中的'a',"caandy," 中的前面兩個
    'a'和"caaaaaaandy"中前面的三個'a',注意:即使"caaaaaaandy" 中有很多個'a',但只匹配前面的三
    個'a'即"aaa"。

    字符[xyz]
    意義:一字符列表,匹配列出中的任一字符。你可以通過連字符-指出一個字符范圍。
    例如:[abcd]跟[a-c]一樣。它們匹配"brisket"中的'b'和"ache"中的'c'。

    字符[^xyz]
    意義:一字符補集,也就是說,它匹配除了列出的字符外的所有東西。 你可以使用連字符-指出一
    字符范圍。
    例如:[^abc]和[^a-c]等價,它們最早匹配"brisket"中的'r'和"chop."中的'h'。

    字符[b]
    意義:匹配一個空格(不要與b混淆)

    字符b
    意義:匹配一個單詞的分界線,比如一個空格(不要與[b]混淆)
    例如:/bnw/匹配"noonday"中的'no',/wyb/匹配"possibly yesterday."中的'ly'。

    字符B
    意義:匹配一個單詞的非分界線
    例如:/wBn/匹配"noonday"中的'on',/yBw/匹配"possibly yesterday."中的'ye'。

    字符cX
    意義:這里的X是一個控制字符。匹配一個字符串的控制字符。
    例如:/cM/匹配一個字符串中的control-M。

    字符d
    意義:匹配一個數字,等價于[0-9]。
    例如:/d/或/[0-9]/匹配"B2 is the suite number."中的'2'。

    字符D
    意義:匹配任何的非數字,等價于[^0-9]。
    例如:/D/或/[^0-9]/匹配"B2 is the suite number."中的'B'。

    字符f
    意義:匹配一個表單符

    字符n
    意義:匹配一個換行符

    字符r
    意義:匹配一個回車符

    字符s
    意義:匹配一個單個white空格符,包括空格,tab,form feed,換行符,等價于[ fnrtv]。
    例如:/sw*/匹配"foo bar."中的' bar'。

    字符S
    意義:匹配除white空格符以外的一個單個的字符,等價于[^ fnrtv]。
    例如:/S/w*匹配"foo bar."中的'foo'。

    字符t
    意義:匹配一個制表符

    字符v
    意義:匹配一個頂頭制表符

    字符w
    意義:匹配所有的數字和字母以及下劃線,等價于[A-Za-z0-9_]。
    例如:/w/匹配"apple,"中的'a',"$5.28,"中的'5'和"3D."中的'3'。

    字符W
    意義:匹配除數字、字母外及下劃線外的其它字符,等價于[^A-Za-z0-9_]。
    例如:/W/或者/[^$A-Za-z0-9_]/匹配"50%."中的'%'。

    字符n
    意義:這里的n是一個正整數。匹配一個正則表達式的最后一個子串的n的值(計數左圓括號)。

    例如:/apple(,)sorange1/匹配"apple, orange, cherry, peach."中的'apple, orange',下面
    有一個更加完整的例子。
    注意:如果左圓括號中的數字比n指定的數字還小,則n取下一行的八進制escape作為描述。

    字符ooctal和xhex
    意義:這里的ooctal是一個八進制的escape值,而xhex是一個十六進制的escape值,允許在一個正則表達式中嵌入ASCII碼。

    posted on 2008-11-24 14:31 lqx 閱讀(226) 評論(0)  編輯  收藏 所屬分類: html 、web

    主站蜘蛛池模板: 四虎1515hm免费国产| 精品亚洲成a人片在线观看| 亚洲久悠悠色悠在线播放| 亚洲第一永久在线观看| 久久这里只精品99re免费| 91久久成人免费| 处破痛哭A√18成年片免费| 亚洲伊人久久精品| 久久久久久久久免费看无码| 亚洲中文字幕无码中文字| 久久免费看少妇高潮V片特黄| 久久久久久亚洲精品中文字幕| 亚洲国产精品18久久久久久| 免费无码又爽又刺激高潮的视频| 亚洲人成电影网站色| 国产午夜免费福利红片| 一级毛片无遮挡免费全部| 久久亚洲国产中v天仙www| 一级毛片aaaaaa免费看| 亚洲人成伊人成综合网久久| 精品久久久久久久免费加勒比| 国产精品亚洲色图| 亚洲人成伊人成综合网久久久 | 国产真人无遮挡作爱免费视频 | 国产亚洲成AV人片在线观黄桃| 嫩草影院在线播放www免费观看| 中文字幕亚洲精品| 久久精品免费大片国产大片 | 暖暖在线视频免费视频| 亚洲另类自拍丝袜第1页| 日韩免费视频在线观看| 抽搐一进一出gif免费视频| 亚洲日韩乱码中文无码蜜桃臀| 成人毛片免费网站| 国产精品高清免费网站| 日本成人免费在线| a毛片免费全部在线播放**| 亚洲午夜电影在线观看高清| 免费一级特黄特色大片在线| 亚洲免费网站观看视频| 亚洲日韩欧洲乱码AV夜夜摸|