濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 正則表達(dá)式regular expression詳述(一)

正則表達(dá)式regular expression詳述(一)

熱門標(biāo)簽:地圖標(biāo)注與公司業(yè)務(wù)關(guān)系 大學(xué)校門地圖標(biāo)注 銷售電銷機(jī)器人詐騙 廣西智能外呼系統(tǒng)多少錢 平?jīng)龈叩碌貓D標(biāo)注商戶要收費(fèi)嗎 提高電話機(jī)器人接通率 福建微碼電話機(jī)器人 外呼系統(tǒng)api對(duì)接 荊州智能電銷機(jī)器人
 正則表達(dá)式是regular expression,看來(lái)英文比中文要好理解多了,就是檢查表達(dá)式符
不符合規(guī)定??!正則表達(dá)式有一個(gè)功能十分強(qiáng)大而又十分復(fù)雜的對(duì)象RegExp,在JavaScript1.2 版本以
上提供。
    下面我們看看有關(guān)正則表達(dá)式的介紹:
    正則表達(dá)式對(duì)象用來(lái)規(guī)范一個(gè)規(guī)范的表達(dá)式(也就是表達(dá)式符不符合特定的要求,比如是不是Email
地址格式等),它具有用來(lái)檢查給出的字符串是否符合規(guī)則的屬性和方法。
    除此之外,你用RegExp構(gòu)造器建立的個(gè)別正則表達(dá)式對(duì)象的屬性,就已經(jīng)預(yù)先定義好了正則表達(dá)式
對(duì)象的靜態(tài)屬性,你可以隨時(shí)使用它們。
    核心對(duì)象:
    在JavaScript 1.2, NES 3.0以上版本提供。
    在JavaScript 1.3以后版本增加了toSource方法。
    建立方法:
    文字格式或RegExp構(gòu)造器函數(shù)。
    文字建立格式使用以下格式:
    /pattern/flags即/模式/標(biāo)記

    構(gòu)造器函數(shù)方法使用方法如下:
    new RegExp("pattern"[, "flags"])即new RegExp("模式"[,"標(biāo)記"])

    參數(shù):
    pattern(模式)
    表示正則表達(dá)式的文本

    flags(標(biāo)記)
    如果指定此項(xiàng),flags可以是下面值之一:
    g: global match(全定匹配)
    i: ignore case(忽略大小寫)
    gi: both global match and ignore case(匹配所有可能的值,也忽略大小寫)

    注意:文本格式中的參數(shù)不要使用引號(hào)標(biāo)記,而構(gòu)造器函數(shù)的參數(shù)則要使用引號(hào)標(biāo)記。所以下面的
表達(dá)式建立同樣的正則表達(dá)式:
    /ab+c/i
  new RegExp("ab+c", "i")

    描述:
    當(dāng)使用構(gòu)造函數(shù)的時(shí)候,必須使用正常的字符串避開規(guī)則(在字符串中加入前導(dǎo)字符 )是必須的。
    例如,下面的兩條語(yǔ)句是等價(jià)的:
    re = new RegExp("\w+")
    re = /w+/

    下面的提供了在正則表達(dá)式中能夠使用的完整對(duì)特殊字符的一個(gè)完整的列表和描述。

    表1.3:正則表達(dá)式中的特殊字符:

    字符
    意義:對(duì)于字符,通常表示按字面意義,指出接著的字符為特殊字符,不作解釋。
    例如:/b/匹配字符'b',通過(guò)在b 前面加一個(gè)反斜杠,也就是/b/,則該字符變成特殊字符,表示
匹配一個(gè)單詞的分界線。
    或者:   
    對(duì)于幾個(gè)字符,通常說(shuō)明是特殊的,指出緊接著的字符不是特殊的,而應(yīng)該按字面解釋。
    例如:*是一個(gè)特殊字符,匹配任意個(gè)字符(包括0個(gè)字符);例如:/a*/意味匹配0個(gè)或多個(gè)a。
    為了匹配字面上的*,在a前面加一個(gè)反斜杠;例如:/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"中的任何字符。

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

    字符f
    意義:匹配一個(gè)表單符

    字符n
    意義:匹配一個(gè)換行符

    字符r
    意義:匹配一個(gè)回車符

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

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

    字符t
    意義:匹配一個(gè)制表符

    字符v
    意義:匹配一個(gè)頂頭制表符

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

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

    字符n
    意義:這里的n是一個(gè)正整數(shù)。匹配一個(gè)正則表達(dá)式的最后一個(gè)子串的n的值(計(jì)數(shù)左圓括號(hào))。

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

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


    當(dāng)表達(dá)式被檢查的時(shí)候,文字符號(hào)提供了編輯正則表達(dá)式的方法。利用文字符號(hào)可以使到正則表達(dá)
式保持為常數(shù)。例如,如果你在一個(gè)循環(huán)中使用文字符號(hào)來(lái)構(gòu)造一個(gè)正則表達(dá)式,正則表達(dá)式不需進(jìn)行
反復(fù)編譯。
    正則表達(dá)式對(duì)象構(gòu)造器,例如,new RegExp("ab+c"),提供正則表達(dá)式的運(yùn)行時(shí)編譯。當(dāng)你知道正
則表達(dá)式的模式會(huì)變化的時(shí)候,應(yīng)該使用構(gòu)造函數(shù),或者你不知道正則表達(dá)式的模式,而它們是從另外
的源獲得的時(shí)候,比如由用戶輸入時(shí)。一旦你定義好了正則表達(dá)式,該正則表達(dá)式可在任何地方使用,
并且可以改變,你可以使用編譯方法來(lái)編譯一個(gè)新的正則表達(dá)式以便重新使用。
    一個(gè)分離預(yù)先定義的RegExp對(duì)象可以在每個(gè)窗口中使用;也就是說(shuō),每個(gè)分離的JavaScript線程運(yùn)
行以獲得自己的RegExp對(duì)象。因?yàn)槊總€(gè)腳本在一個(gè)線程中是不可中斷的,這就確保了不同的腳本不會(huì)覆
蓋RegExp對(duì)象的值。
    預(yù)定義的RegExp對(duì)象包含的靜態(tài)屬性:input, multiline, lastMatch,lastParen, leftContext,
rightContext, 以及從$1到$9。input和multiline屬性能被預(yù)設(shè)。其它靜態(tài)屬性的值是在執(zhí)行個(gè)別正則
表達(dá)式對(duì)象的exec和test方法后,且在執(zhí)行字符串的match和replace方法后設(shè)置的。

    屬性
    注意RegExp對(duì)象的幾個(gè)屬性既有長(zhǎng)名字又有短名字(象Perl)。這些名字都是指向相同的值。Perl是
一種編程語(yǔ)言,而JavaScript模仿了它的正則表達(dá)式。

    屬性$1, ..., $9
    取得匹配的子串,如果有的話

    屬性$_
    參考input

    屬性$*
    參考multiline

    屬性$
    參考lastMatch

    屬性$+
    參考lastParen

    屬性$`
    參考leftContext

    屬性$'
    參考rightContext

    屬性constructor
    指定用來(lái)建立對(duì)象原型函

    屬性global
    決定是否測(cè)試正則表達(dá)式是否不能匹配所有的字符串,或者只是與最先的沖突。

    屬性ignoreCase
    決定試圖匹配字符串的時(shí)候是否忽略大小寫

    屬性input
    當(dāng)正則表達(dá)式被匹配的時(shí)候,為相反的字符串。

    屬性lastIndex
    決定下一次匹配從那里開始

    屬性lastMatch
    最后一個(gè)匹配的字符

    屬性lastParen
    子串匹配的時(shí)候,最后一個(gè)parenthesized,如果有的話。

    屬性leftContext
    最近一次匹配前的子串。

    屬性multiline
    是否在串的多行中搜索。

    屬性prototype
    允許附加屬性到所有的對(duì)象

    屬性rightContext
    最近一次匹配后的的子串。

    屬性source
    模式文本





    方法
    compile方法
    編譯一個(gè)正則表達(dá)式對(duì)象

    exec方法
    運(yùn)行正則表達(dá)式匹配

    test方法
    測(cè)試正則達(dá)式匹配

    toSource方法
    返回一個(gè)對(duì)象的文字描述指定的對(duì)象;你可以使用這個(gè)值來(lái)建立一個(gè)新的對(duì)象。不考慮Object.toS
ource方法。

    toString方法
    返回一個(gè)字符串描述指定的對(duì)象,不考慮Object.toString對(duì)象。

    valueOf方法
    返回指定對(duì)角的原始值。不考慮Object.valueOf方法。

 另外,這個(gè)對(duì)象繼承了對(duì)象的watch和unwatch方法




  例子:
  例1、下述示例腳本使用replace方法來(lái)轉(zhuǎn)換串中的單詞。在替換的文本中,腳本使用全局 RegExp
對(duì)象的$1和$2屬性的值。注意,在作為第二個(gè)參數(shù)傳遞給replace方法的時(shí)候,RegExp對(duì)象的$屬性的名
稱。
    SCRIPT LANGUAGE="JavaScript1.2">
    re = /(w+)s(w+)/;
    str = "John Smith";
    newstr=str.replace(re,"$2, $1");
    document.write(newstr)
    /SCRIPT>
    顯示結(jié)果:"Smith, John".

  例2、下述示例腳本中,RegExp.input由Change事件處理句柄設(shè)置。在getInfo函數(shù)中,exec 方法
使用RegExp.input的值作為它的參數(shù),注意RegExp預(yù)置了$屬性。

   
    SCRIPT LANGUAGE="JavaScript1.2">
    function getInfo(abc)
    {
    re = /(w+)s(d+)/;
    re.exec(abc.value);
    window.alert(RegExp.$1 + ", your age is " + RegExp.$2);
    }
    /SCRIPT>

  請(qǐng)輸入你的姓和年齡,輸入完后按回車鍵。
  FORM>INPUT TYPE="TEXT" NAME="NameAge" onChange="getInfo(this);">/FORM>
  /HTML>


    $1, ..., $9屬性
    用圓括號(hào)括著的匹配子串,如果有的話。
    是RegExp的屬性
    靜態(tài),只讀

    在JavaScript 1.2, NES 3.0以上版本提供
    描述:因?yàn)閕nput是靜態(tài)屬性,不是個(gè)別正則表達(dá)式對(duì)象的屬性。你可以使用RegExp.input 訪問(wèn)該
屬性。

    能加上圓括號(hào)的子串的數(shù)量不受限制,但正則表達(dá)式對(duì)象只能保留最后9 條。如果你要訪問(wèn)所有的
圓括號(hào)內(nèi)的匹配字串,你可以使用返回的數(shù)組。

    這些屬性能用在RegExp.replace方法替換后的字符串(輸出結(jié)果)。當(dāng)使用這種方式的時(shí)候,不用預(yù)
先考慮RegExp對(duì)象。下面給出例子。當(dāng)正則表達(dá)式中沒有包含圓括號(hào)的時(shí)候,該腳本解釋成$n的字面意
義。(這里的n是一個(gè)正整數(shù))。


    例如:
    下例腳本使用replace 方法來(lái)交換串中單詞的位置。在替換后的文本字串中,腳本使用正則表達(dá)式
RegExp對(duì)象的$1和$2屬性的值。注意:當(dāng)它們向replace方法傳遞參數(shù)的時(shí)候,這里沒有考慮 $ 屬性的
RegExp對(duì)象的名稱。
    SCRIPT LANGUAGE="JavaScript1.2">
    re = /(w+)s(w+)/;
    str = "John Smith";
    newstr=str.replace(re,"$2, $1");
    document.write(newstr)
    /SCRIPT>
    顯示的輸出結(jié)果為:Smith, John。
您可能感興趣的文章:
  • 用用outlook Express 由于服務(wù)器拒絕接受發(fā)件人的電子郵件地址,這封郵件無(wú)法發(fā)送
  • Sql server 2008 express遠(yuǎn)程登錄實(shí)例設(shè)置 圖文教程
  • nodejs教程 安裝express及配置app.js文件的詳細(xì)步驟
  • DevExpress SplitContainerControl用法總結(jié)
  • DevExpress之TreeList用法實(shí)例總結(jié)
  • DevExpress之SplashScreen用法實(shí)例
  • SQL2005Express中導(dǎo)入ACCESS數(shù)據(jù)庫(kù)的兩種方法
  • DevExpress之ChartControl實(shí)現(xiàn)餅狀圖百分比演示實(shí)例
  • DevExpress之ChartControl實(shí)現(xiàn)柱狀圖演示實(shí)例
  • node+express+ejs制作簡(jiǎn)單頁(yè)面上手指南
  • express的中間件bodyParser詳解
  • express的中間件cookieParser詳解
  • 在WIN7下安裝和配置SQL Server 2005 Express Edition(精簡(jiǎn)版)
  • C#實(shí)現(xiàn)DevExpress本地化實(shí)例詳解
  • Express的路由詳解

標(biāo)簽:海南 邯鄲 婁底 黔東 內(nèi)江 德陽(yáng) 樂山 衡陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《正則表達(dá)式regular expression詳述(一)》,本文關(guān)鍵詞  正則,表達(dá)式,regular,expression,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《正則表達(dá)式regular expression詳述(一)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于正則表達(dá)式regular expression詳述(一)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    西贡区| 内丘县| 绍兴县| 双辽市| 北辰区| 布拖县| 荔浦县| 梅河口市| 瓦房店市| 饶阳县| 宁波市| 元阳县| 昭平县| 明光市| 彭泽县| 岗巴县| 河北区| 寿阳县| 郧西县| 海城市| 枞阳县| 邓州市| 乡城县| 日土县| 丹凤县| 岐山县| 望江县| 朔州市| 南宁市| 新营市| 青川县| 三都| 永春县| 工布江达县| 神农架林区| 丰镇市| 绵阳市| 万宁市| 阳信县| 安福县| 双江|