![正則表達式中的特殊字符_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/930cc9da-0d7a-4d60-bbc7-cdcebde7612b/930cc9da-0d7a-4d60-bbc7-cdcebde7612b1.gif)
![正則表達式中的特殊字符_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/930cc9da-0d7a-4d60-bbc7-cdcebde7612b/930cc9da-0d7a-4d60-bbc7-cdcebde7612b2.gif)
![正則表達式中的特殊字符_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/930cc9da-0d7a-4d60-bbc7-cdcebde7612b/930cc9da-0d7a-4d60-bbc7-cdcebde7612b3.gif)
![正則表達式中的特殊字符_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/930cc9da-0d7a-4d60-bbc7-cdcebde7612b/930cc9da-0d7a-4d60-bbc7-cdcebde7612b4.gif)
![正則表達式中的特殊字符_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/930cc9da-0d7a-4d60-bbc7-cdcebde7612b/930cc9da-0d7a-4d60-bbc7-cdcebde7612b5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、正則表達式中的特殊字符 字符 含意 做為轉意,即通常在""后面的字符不按原來意義解釋,如/b/匹配字符"b",當b前面加了反斜桿后/b/,轉意為匹配一個單詞的邊界。 -或- 對正則表達式功能字符的還原,如"*"匹配它前面元字符0次或多次,/a*/將匹配a,aa,aaa,加了""后,/a*/將只匹配"a*"。 匹配一個輸入或一行的開頭,/a/匹配"an A",而不匹配"An a" $ 匹配一個輸入或一行的結尾,/a$/匹配"An a",而
2、不匹配"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/匹配C
3、trl-M d 匹配一個字數(shù)字符,/d/ = /0-9/ D 匹配一個非字數(shù)字符,/D/ = /0-9/ n 匹配一個換行符 r 匹配一個回車符 s 匹配一個空白字符,包括n,r,f,t,v等 S 匹配一個非空白字符,等于/nfrtv/ t 匹配一個制表符 v 匹配一個重直制表符 w 匹配一個可以組成單詞的字符(alphanumeric,這是我的意譯,含數(shù)字,包括下劃線,如w匹配"$5.98"中的5,等于a-zA-Z0-9 W 匹配一個不可以組成單詞的字符,如W匹配"$5.98"中的$,等于a-zA-Z0-9。用re = new RegExp("
4、;pattern","flags" 的方式比較好 pattern : 正則表達式 flags: g (全文查找出現(xiàn)的所有 pattern) i (忽略大小寫) m (多行查找) vaScript動態(tài)正則表達式問題 請問正則表達式可以動態(tài)生成嗎? 例如JavaScript中: var str = "strTemp" 要生成: var re = /strTemp/; 如果是字符連接: var re = "/" + str + "/"即可 但是要生成表達式,可以實現(xiàn)嗎?怎樣實現(xiàn)? 正則表達式是一個描述字符模式的
5、對象。 JavaScript的RegExp對象和String對象定義了使用正則表達式來執(zhí)行強大的模式匹配和文本檢索與替換函數(shù)的方法. var pattern = /s$/; 這行代碼創(chuàng)建一個新的RegExp對象,并將它賦給變量parttern.這個特殊的RegExp對象和所有以字母"s"結尾的字符串都匹配.用RegExp(也可以定義一個等價的正則表達式,代碼如下: var pattern = new RegExp("s$" 無論是用正則表達式直接量還是用構造函數(shù)RegExp(,創(chuàng)建一個RegExp對象都是比較容易的.較為困難的任務是用正則表達式語法來描述
6、字符的模式. JavaScript采用的是Perl語言正則表達式語法的一個相當完整的子集. 正則表達式的模式規(guī)范是由一系列字符構成的.大多數(shù)字符(包括所有字母數(shù)字字符描述的都是按照字面意思進行匹配的字符.這樣說來,正則表達式/java/就和所有包含子串 "java" 的字符串相匹配.雖然正則表達式中的其它字符不是按照字面意思進行匹配的,但它們都具有特殊的意義.正則表達式 /s$/ 包含兩個字符. 第一個特殊字符 "s" 是按照字面意思與自身相匹配.第二個字符 "$" 是一個特殊字符,它所匹配的是字符串的結尾.所以正則表達式 /s$/
7、匹配的就是以字母 "s" 結尾的字符串. 1.直接量字符 我們已經(jīng)發(fā)現(xiàn)了,在正則表達式中所有的字母字符和數(shù)字都是按照字面意思與自身相匹配的.JavaScript的正則表達式還通過以反斜杠(開頭的轉義序列支持某些非字母字符.例如,序列 "n" 在字符串中匹配的是一個直接量換行符.在正則表達式中,許多標點符號都有特殊的含義.下面是這些字符和它們的含義: 正則表達式的直接量字符 字符 匹配 _ 字母數(shù)字字符 自身 f 換頁符 n 換行符 r 回車 t 制表符 v 垂直制表符 / 一個 / 直接量 一個 直接量 . 一個 . 直接量 * 一個 * 直接量 + 一
8、個 + 直接量 ? 一個 ? 直接量 | 一個 | 直接量 ( 一個 ( 直接量 一個 直接量 一個 直接量 一個 直接量 一個 直接量 一個 直接量 XXX 由十進制數(shù) XXX 指 定的ASCII碼字符 Xnn 由十六進制數(shù) nn 指定的ASCII碼字符 cX 控制字符X. 例如, cI等價于 t, cJ等價于 n _ 如果想在正則表達式中使用特殊的標點符號,必須在它們之前加上一個 "" . 2.字符類 將單獨的直接符放進中括號內(nèi)就可以組合成字符類.一個字符類和它所包含的任何一個字符都匹配,所以正則表達式 / abc / 和字母 "a" , "
9、;b" , "c" 中的任何一個都匹配.另外還可以定義否定字符類,這些類匹配的是除那些包含在中括號之內(nèi)的字符外的所有字符.定義否定字符尖時,要將一個 符號作為從左中括號算起的第一個字符.正則表達式的集合是 / a-zA-z0-9 / . 由于某些字符類非常常用,所以JavaScript的正則表達式語法包含一些特殊字符和轉義序列來表示這些常用的類.例如, s 匹配的是空格符,制表符和其它空白符, s 匹配的則是空白符之外的任何字符. 正則表灰式的字符類 字符 匹配 _ . 位于括號之內(nèi)的任意字符 . 不在括號之中的任意字符 . 除了換行符之外的任意字符,等價于n w
10、 任何單字字符, 等價于a-zA-Z0-9 W 任何非單字字符,等價于a-zA-Z0-9 s 任何空白符,等價于 t n r f v S 任何非空白符,等價于 t n r f v d 任何數(shù)字,等價于0-9 D 除了數(shù)字之外的任何字符,等價于0-9 b 一個退格直接量(特例 _ 3.復制 /d2, 4/ /匹配2到4間的數(shù)字. /w3 d?/ /匹配三個單字字符和一個任意的數(shù)字. /s+javas+/ /匹配字符串"java" ,并且該串前后可以有一個或多個空格. /" * / /匹配零個或多個非引號字符. 正則表達式的復制字符 字符 含義 _ n, m 匹配前一
11、項至少n次,但是不能超過m次 n, 匹配前一項n次,或者多次 n 匹配前一項恰好n次 ? 匹配前一項0次或1次,也就是說前一項是可選的. 等價于 0, 1 + 匹配前一項1次或多次,等價于1, * 匹配前一項0次或多次.等價于0, _ 4.選擇,分組和引用 (ab|cd + |ef / 匹配的既可以是字符串 "ef",也可以是字符串"ab" 或者 "cd" 的一次或多次重復. 在正則表達式中,括號的第二個用途是在完整的模式中定義子模式。當一個正則表達式成功地和目標字符串相匹配時,可以從目標串中抽出和括號中的子模式相匹配的部分.例如,假
12、定我們正在檢索的模式是一個或多個字母后面跟隨一位或多位數(shù)字,那么我們可以使用模式 / a-z + d+/.但是由于假定我們真正關心的是每個匹配尾部的數(shù)字,那么如果我們將模式的數(shù)字部分放在括號中 (/ a-z + (d+/ ,我們就可以從所檢索到的任何匹配中抽取數(shù)字了,之后我們會對此進行解析的.所以它的位置是被計數(shù)的左括號的位置. 例如:在下面的正則表達式被指定為 2: /(Jjava(Sscript sis s (funw* / 對正則表達式中前一子表達式的引用所指定的并不是那個子表達式的模式,而是與那個模式相匹配的文本.這樣,引用就不只是幫助你輸入正則表達式的重復部分的快 捷方式了,它還實施
13、了一條規(guī)約,那就是一個字符串各個分離的部分包含的是完全相同的字符.例如:下面的正則表達式匹配的就是位于單引號或雙引號之內(nèi)的所有字符.但是,它要求開始和結束的引號匹配(例如兩個都是雙引號或者都是單引號: /' " ' "*' "/ 如果要求開始和結束的引號匹配,我們可以使用如下的引用: /( ' " ' " * 1/ 1匹配的是第一個代括號的子表達式所匹配的模式.在這個例子中,它實施了一種規(guī)約,那就是開始的引號必須和結束的引號相匹配.注意,如果反斜杠后跟隨的數(shù)字比代括號的子表達式數(shù)多,那么它就會被解析為一個
14、十進制的轉義序列,而不是一個引用.你可以堅持使用完整的三個字符來表示轉義序列,這們就可以避免混淆了.例如, 使用 044,而不是44.下面是正則表達式的選擇、分組和引用字符: 字符 含義 _ 用使用 n 和第n個分組所匹配的字符相匹配.分組是括號中的子表達式(可能是嵌套的.分組號是從左到右計數(shù)的左括號數(shù) _ 5.指定匹配的位置 下面是正則表達式的錨字符: 字符 含義 _ 匹配的是字符的開頭,在多行檢索中,匹配的是一行的開頭 $ 匹配的是字符的結尾,在多行檢索中,匹配的是一行的結尾 b 匹配的是一個詞語的邊界.簡而言之就是位于字符w 和 w之間的位置(注意:b匹配的是退格符 B 匹配
15、的是非詞語的邊界的字符 _ 6.屬性 就是說,應該找出被檢索的字符串中所有的匹配.這兩種屬性聯(lián)合起來就可以執(zhí)行一個全局的,大小寫不敏感的匹配. 例如: 要執(zhí)行一個大小不敏感的檢索以找到詞語 "java" (或者是 "java" 、"JAVA"等 的第一個具體值,我們可以使用大小不敏感的正則表達式 /b javab/i .如果要在一個字符串中找到 "java" 所有的具體值,我們還可以添加屬性 g, 即 /b java b/gi . 以下是正則表達式的屬性: 字符 含義 _ i 執(zhí)行大小寫不敏感的匹配 g 執(zhí)行一個全
16、局的匹配,簡而言之,就是找到所有的匹配,而不是在找到第一個之后就停止了 _ 除屬性 g 和 i 之外,正則表達式就沒有其它像屬性一樣的特性了.如果將構造函數(shù) RegExp 的靜態(tài)屬性 multiline 設置為 true ,那么模式匹配將以多行的模式進行.在這種模式下,錨字符 和 $ 匹配的不只是檢索字符串的開頭和結尾,還匹配檢索字符串內(nèi)部的一行的開頭和結尾.例如: 模式 /Java$/ 匹配的是 "Java",但是并不匹配"Javanis fun" .如果我們設置了 multiline 屬性,那么后者也將被匹配: RegExp.multiline =
17、true; 在JAVASCRIPT里面判斷一個字符串是否是電子郵件的格式: 復制代碼 代碼如下:REDfunction dateVerify(date var reg = /(d4(-(d22(d2$/; var r = date.match(reg; if(r=null return false; var d= new Date(r1, r3-1,r4; var newStr=d.getFullYear(+r2+(d.getMonth(+1+r2+d.getDate(; date=r1+r2+(r3-1+1+r2+(r4-1+1; return newStr=date; /RED javas
18、cript的17種正則表達式 "d+$"/非負整數(shù)(正整數(shù) + 0) "0-9*1-90-9*$"/正整數(shù) "(-d+|(0+$"/非正整數(shù)(負整數(shù) + 0) "-0-9*1-90-9*$"/負整數(shù) "-?d+$"/整數(shù) "d+(.d+?$"/非負浮點數(shù)(正浮點數(shù) + 0) "(0-9+.0-9*1-90-9*|(0-9*1-90-9*.0-9+|(0-9*1-90-9*$"/正浮點數(shù)"(-d+(.d+?|(0+(.0+?$"/非正浮點
19、數(shù)(負浮點數(shù) + 0) "(-(0-9+.0-9*1-90-9*|(0-9*1-90-9*.0-9+|(0-9*1-90-9*$"/負浮點數(shù)"(-?d+(.d+?$"/浮點數(shù) "A-Za-z+$"/由26個英文字母組成的字符串 "A-Z+$"/由26個英文字母的大寫組成的字符串 "a-z+$"/由26個英文字母的小寫組成的字符串 "A-Za-z0-9+$"/由數(shù)字和26個英文字母組成的字符串 "w+$"/由數(shù)字、26個英文字母或者下劃線組成的字符串 &qu
20、ot;w-+(.w-+*w-+(.w-+$"/email地址 "a-zA-z+:/(w+(-w+*(.(w+(-w+*(?S*?$"/url 正則表達式對象的屬性及方法 預定義的正則表達式擁有有以下靜態(tài)屬性:input, multiline, lastMatch, lastParen, leftContext, rightContext和$1到$9。其中input和multiline可以預設置。其他屬性的值在執(zhí)行過exec或test方法后被根據(jù)不同條件賦以不同的值。許多屬性同時擁有長和短(perl風格的兩個名字,并且,這兩個名字指向同一個值。(JavaScript
21、模擬perl的正則表達式正則表達式對象的屬性 屬性 含義 $1.$9 如果它(們存在,是匹配到的子串 $_ 參見input $* 參見multiline $& 參見lastMatch $+ 參見lastParen $ 參見leftContext $'' 參見rightContext constructor 創(chuàng)建一個對象的一個特殊的函數(shù)原型 global 是否在整個串中匹配(bool型 ignoreCase 匹配時是否忽略大小寫(bool型 input 被匹配的串 lastIndex 最后一次匹配的索引 lastParen 最后一個括號括起來的子串 leftContext
22、 最近一次匹配以左的子串 multiline 是否進行多行匹配(bool型 prototype 允許附加屬性給對象 rightContext 最近一次匹配以右的子串 source 正則表達式模式 lastIndex 最后一次匹配的索引 正則表達式對象的方法 方法 含義 compile 正則表達式比較 exec 執(zhí)行查找 test 進行匹配 toSource 返回特定對象的定義(literal representing,其值可用來創(chuàng)建一個新的對象。重載Object.toSource方法得到的。 toString 返回特定對象的串。重載Object.toString方法得到的。 val
23、ueOf 返回特定對象的原始值。重載Object.valueOf方法得到 例子 復制代碼 代碼如下:將輸出"Smith, John" javascript正則表達式檢驗 復制代碼 代碼如下:/校驗是否全由數(shù)字組成 function isDigit(s var patrn=/0-91,20$/; if (!patrn.exec(s return false return true /校驗登錄名:只能輸入5-20個以字母開頭、可帶數(shù)字、“_”、“.”的字串 function isRegisterUserName(s var patrn=/a-zA-Z1(a-zA-Z0-9|._
24、4,19$/; if (!patrn.exec(s return false return true /校驗用戶姓名:只能輸入1-30個以字母開頭的字串 function isTrueName(s var patrn=/a-zA-Z1,30$/; if (!patrn.exec(s return false return true /校驗密碼:只能輸入6-20個字母、數(shù)字、下劃線 function isPasswd(s var patrn=/(w6,20$/; if (!patrn.exec(s return false return true /校驗普通電話、傳真號碼:可以“+”開頭,除數(shù)字
25、外,可含有“-” function isTel(s /var patrn=/+0,1(d1,3 ?(-?(d1,12+$/; var patrn=/+0,1(d1,3 ?(-?(d| 1,12+$/; if (!patrn.exec(s return false return true /校驗手機號碼:必須以數(shù)字開頭,除數(shù)字外,可含有“-” function isMobil(s var patrn=/+0,1(d1,3 ?(-?(d| 1,12+$/; if (!patrn.exec(s return false return true /校驗郵政編碼 function isPostalCod
26、e(s /var patrn=/a-zA-Z0-93,12$/; var patrn=/a-zA-Z0-9 3,12$/; if (!patrn.exec(s return false return true /校驗搜索關鍵字 function isSearch(s var patrn=/!#$%&*(+=|:;',.<>/?1!$%&(+=|:;',.<>?0,19$/;if (!patrn.exec(s return false return true function isIP(s /by zergling var patrn=/0
27、-9.1,20$/; if (!patrn.exec(s return false return true 正則表達式regular expression詳述(一 正則表達式是regular expression,看來英文比中文要好理解多了,就是檢查表達式符 不符合規(guī)定!正則表達式有一個功能十分強大而又十分復雜的對象RegExp,在JavaScript1.2 版本以上提供。 下面我們看看有關正則表達式的介紹: 正則表達式對象用來規(guī)范一個規(guī)范的表達式(也就是表達式符不符合特定的要求,比如是不是Email地址格式等,它具有用來檢查給出的字符串是否符合規(guī)則的屬性和方法。 除此之外,你用RegExp構
28、造器建立的個別正則表達式對象的屬性,就已經(jīng)預先定義好了正則表達式對象的靜態(tài)屬性,你可以隨時使用它們。 核心對象: 在JavaScript 1.2, NES 3.0以上版本提供。 在JavaScript 1.3以后版本增加了toSource方法。 建立方法: 文字格式或RegExp構造器函數(shù)。 文字建立格式使用以下格式: /pattern/flags即/模式/標記 構造器函數(shù)方法使用方法如下: new RegExp("pattern", "flags"即new RegExp("模式","標記" 參數(shù): pattern
29、(模式 表示正則表達式的文本 flags(標記 如果指定此項,flags可以是下面值之一: g: global match(全定匹配 i: ignore case(忽略大小寫 gi: both global match and ignore case(匹配所有可能的值,也忽略大小寫 注意:文本格式中的參數(shù)不要使用引號標記,而構造器函數(shù)的參數(shù)則要使用引號標記。所以下面的表達式建立同樣的正則表達式: /ab+c/i new RegExp("ab+c", "i" 描述: 當使用構造函數(shù)的時候,必須使用正常的字符串避開規(guī)則(在字符串中加入前導字符 是必須的。 例
30、如,下面的兩條語句是等價的: re = new RegExp("w+" re = /w+/ 下面的提供了在正則表達式中能夠使用的完整對特殊字符的一個完整的列表和描述。 表1.3:正則表達式中的特殊字符: 字符 意義:對于字符,通常表示按字面意義,指出接著的字符為特殊字符,不作解釋。 例如:/b/匹配字符'b',通過在b 前面加一個反斜杠,也就是/b/,則該字符變成特殊字符,表示匹配一個單詞的分界線。 或者: 對于幾個字符,通常說明是特殊的,指出緊接著的字符不是特殊的,而應該按字面解釋。 例如:*是一個特殊字符,匹配任意個字符(包括0個字符;例如:/a*/意味
31、匹配0個或多個a。 為了匹配字面上的*,在a前面加一個反斜杠;例如:/a*/匹配'a*'。 字符 意義:表示匹配的字符必須在最前邊。 例如:/A/不匹配"an A,"中的'A',但匹配"An A."中最前面的'A'。 字符$ 意義:與類似,匹配最末的字符。 例如:/t$/不匹配"eater"中的't',但匹配"eat"中的't'。 字符* 意義:匹配*前面的字符0次或n次。 例如:/bo*/匹配"A ghost booooed
32、"中的'boooo'或"A bird warbled"中的'b',但不匹配"A goat grunted"中的任何字符。 字符+ 意義:匹配+號前面的字符1次或n次。等價于1,。 例如:/a+/匹配"candy"中的'a'和"caaaaaaandy."中的所有'a'。 字符? 意義:匹配?前面的字符0次或1次。 例如:/e?le?/匹配"angel"中的'el'和"angle."中的
33、39;le'。 字符. 意義:(小數(shù)點匹配除換行符外的所有單個的字符。 例如:/.n/匹配"nay, an apple is on the tree"中的'an'和'on',但不匹配'nay'。 字符(x 意義:匹配'x'并記錄匹配的值。 例如:/(foo/匹配和記錄"foo bar."中的'foo'。匹配子串能被結果數(shù)組中的素1, ., n 返回,或被RegExp對象的屬性$1, ., $9返回。 字符x|y 意義:匹配'x'或者'y'
34、;。 例如:/green|red/匹配"green apple"中的'green'和"red apple."中的'red'。 字符n 意義:這里的n是一個正整數(shù)。匹配前面的n個字符。 例如:/a2/不匹配"candy,"中的'a',但匹配"caandy," 中的所有'a'和"caaandy."中前面的兩個 'a'。 字符n, 意義:這里的n是一個正整數(shù)。匹配至少n個前面的字符。 例如:/a2,不匹配"can
35、dy"中的'a',但匹配"caandy"中的所有'a'和"caaaaaaandy."中的所有'a' 字符n,m 意義:這里的n和m都是正整數(shù)。匹配至少n個最多m個前面的字符。 例如:/a1,3/不匹配"cndy"中的任何字符,但匹配 "candy,"中的'a',"caandy," 中的前面兩個 'a'和"caaaaaaandy"中前面的三個'a',注意:即使"c
36、aaaaaaandy" 中有很多個'a',但只匹配前面的三個'a'即"aaa"。 字符xyz 意義:一字符列表,匹配列出中的任一字符。你可以通過連字符-指出一個字符范圍。 例如:abcd跟a-c一樣。它們匹配"brisket"中的'b'和"ache"中的'c'。 字符xyz 意義:一字符補集,也就是說,它匹配除了列出的字符外的所有東西。 你可以使用連字符-指出一 字符范圍。 例如:abc和a-c等價,它們最早匹配"brisket"中的'
37、;r'和"chop."中的'h'。 字符b 意義:匹配一個空格(不要與b混淆 字符b 意義:匹配一個單詞的分界線,比如一個空格(不要與b混淆 例如:/bnw/匹配"noonday"中的'no',/wyb/匹配"possibly yesterday."中的'ly'。 字符B 意義:匹配一個單詞的非分界線 例如:/wBn/匹配"noonday"中的'on',/yBw/匹配"possibly yesterday."中的'y
38、e'。 字符cX 意義:這里的X是一個控制字符。匹配一個字符串的控制字符。 例如:/cM/匹配一個字符串中的control-M。 字符d 意義:匹配一個數(shù)字,等價于0-9。 例如:/d/或/0-9/匹配"B2 is the suite number."中的'2'。 字符D 意義:匹配任何的非數(shù)字,等價于0-9。 例如:/D/或/0-9/匹配"B2 is the suite number."中的'B'。 字符f 意義:匹配一個表單符 字符n 意義:匹配一個換行符 字符r 意義:匹配一個回車符 字符s 意義:匹配一個單
39、個white空格符,包括空格,tab,form feed,換行符,等價于 fnrtv。 例如:/sw*/匹配"foo bar."中的' bar'。 字符S 意義:匹配除white空格符以外的一個單個的字符,等價于 fnrtv。 例如:/S/w*匹配"foo bar."中的'foo'。 字符t 意義:匹配一個制表符 字符v 意義:匹配一個頂頭制表符 字符w 意義:匹配所有的數(shù)字和字母以及下劃線,等價于A-Za-z0-9_。 例如:/w/匹配"apple,"中的'a',"$5.28
40、,"中的'5'和"3D."中的'3'。 字符W 意義:匹配除數(shù)字、字母外及下劃線外的其它字符,等價于A-Za-z0-9_。 例如:/W/或者/$A-Za-z0-9_/匹配"50%."中的'%'。 字符n 意義:這里的n是一個正整數(shù)。匹配一個正則表達式的最后一個子串的n的值(計數(shù)左圓括號。 例如:/apple(,sorange1/匹配"apple, orange, cherry, peach."中的'apple, orange',下面有一個更加完整的例子。 注意:
41、如果左圓括號中的數(shù)字比n指定的數(shù)字還小,則n取下一行的八進制escape作為描述。 字符ooctal和xhex 意義:這里的ooctal是一個八進制的escape值,而xhex是一個十六進制的escape值,允許在一個正則表達式中嵌入ASCII碼。 當表達式被檢查的時候,文字符號提供了編輯正則表達式的方法。利用文字符號可以使到正則表達式保持為常數(shù)。例如,如果你在一個循環(huán)中使用文字符號來構造一個正則表達式,正則表達式不需進行反復編譯。 正則表達式對象構造器,例如,new RegExp("ab+c",提供正則表達式的運行時編譯。當你知道正則表達式的模式會變化的時候,應該使用構造
42、函數(shù),或者你不知道正則表達式的模式,而它們是從另外的源獲得的時候,比如由用戶輸入時。一旦你定義好了正則表達式,該正則表達式可在任何地方使用,并且可以改變,你可以使用編譯方法來編譯一個新的正則表達式以便重新使用。 一個分離預先定義的RegExp對象可以在每個窗口中使用;也就是說,每個分離的JavaScript線程運行以獲得自己的RegExp對象。因為每個腳本在一個線程中是不可中斷的,這就確保了不同的腳本不會覆蓋RegExp對象的值。 預定義的RegExp對象包含的靜態(tài)屬性:input, multiline, lastMatch,lastParen, leftContext, rightConte
43、xt, 以及從$1到$9。input和multiline屬性能被預設。其它靜態(tài)屬性的值是在執(zhí)行個別正則表達式對象的exec和test方法后,且在執(zhí)行字符串的match和replace方法后設置的。 屬性 注意RegExp對象的幾個屬性既有長名字又有短名字(象Perl。這些名字都是指向相同的值。Perl是 一種編程語言,而JavaScript模仿了它的正則表達式。 屬性$1, ., $9 取得匹配的子串,如果有的話 屬性$_ 參考input 屬性$* 參考multiline 屬性$& 參考lastMatch 屬性$+ 參考lastParen 屬性$ 參考leftContext 屬性$
44、39; 參考rightContext 屬性constructor 指定用來建立對象原型函 屬性global 決定是否測試正則表達式是否不能匹配所有的字符串,或者只是與最先的沖突。 屬性ignoreCase 決定試圖匹配字符串的時候是否忽略大小寫 屬性input 當正則表達式被匹配的時候,為相反的字符串。 屬性lastIndex 決定下一次匹配從那里開始 屬性lastMatch 最后一個匹配的字符 屬性lastParen 子串匹配的時候,最后一個parenthesized,如果有的話。 屬性leftContext 最近一次匹配前的子串。 屬性multiline 是否在串的多行中搜索。 屬性pro
45、totype 允許附加屬性到所有的對象 屬性rightContext 最近一次匹配后的的子串。 屬性source 模式文本 方法 compile方法 編譯一個正則表達式對象 exec方法 運行正則表達式匹配 test方法 測試正則達式匹配 toSource方法 返回一個對象的文字描述指定的對象;你可以使用這個值來建立一個新的對象。不考慮Object.toS ource方法。 toString方法 返回一個字符串描述指定的對象,不考慮Object.toString對象。 valueOf方法 返回指定對角的原始值。不考慮Object.valueOf方法。 另外,這個對象繼承了對象的watch和un
46、watch方法 例子: 例、下述示例腳本使用replace方法來轉換串中的單詞。在替換的文本中,腳本使用全局 RegExp對象的$1和$2屬性的值。注意,在作為第二個參數(shù)傳遞給replace方法的時候,RegExp對象的$屬性的名稱。 顯示結果:"Smith, John". 例、下述示例腳本中,RegExp.input由Change事件處理句柄設置。在getInfo函數(shù)中,exec 方法 使用RegExp.input的值作為它的參數(shù),注意RegExp預置了$屬性。 請輸入你的姓和年齡,輸入完后按回車鍵。 $1, ., $9屬性 用圓括號括著的匹配子串,如果有的話。 是Reg
47、Exp的屬性 靜態(tài),只讀 在JavaScript 1.2, NES 3.0以上版本提供 描述:因為input是靜態(tài)屬性,不是個別正則表達式對象的屬性。你可以使用RegExp.input 訪問該屬性。 能加上圓括號的子串的數(shù)量不受限制,但正則表達式對象只能保留最后9 條。如果你要訪問所有的圓括號內(nèi)的匹配字串,你可以使用返回的數(shù)組。 這些屬性能用在RegExp.replace方法替換后的字符串(輸出結果。當使用這種方式的時候,不用預 先考慮RegExp對象。下面給出例子。當正則表達式中沒有包含圓括號的時候,該腳本解釋成$n的字面意義。(這里的n是一個正整數(shù)。 例如: 下例腳本使用replace 方
48、法來交換串中單詞的位置。在替換后的文本字串中,腳本使用正則表達式 RegExp對象的$1和$2屬性的值。注意:當它們向replace方法傳遞參數(shù)的時候,這里沒有考慮 $ 屬性的 RegExp對象的名稱。 顯示的輸出結果為:Smith, John。 正則表達式regular expression詳述(二 正則表達式詳述(二) 以下這些不是正則表達式的新增對象請參閱對應的JavaScript對象的屬性 $_屬性 參考input $*屬性 參考multiline $&屬性 參考lastMatch $+屬性 參考lastParen $屬性 參考leftContext $'屬性 參考ri
49、ghtContext compile方法 在腳本運行期間編譯正則表達式對象 屬于RegExp的方法 在JavaScript 1.2, NES 3.0以上版本提供 語法: pile(pattern, flags 以數(shù): regexp 正則表達式的名稱,可以是變量名或文字串。 pattern 正則表達式的定義文本。 flags 如果指定的話,可以是下面其中的一個: "g": 匹配所有可能的字串 "i": 忽略大小寫 "gi": 匹配所有可能的字串及忽略大小寫 描述: 使用compile方法來編譯一個正則表達式 created with t
50、he RegExp constructor function。這樣 就強制正則表達式只編譯一次,而不是每次遇到正則表達式的時候都編譯一次。當你確認正則表達式能 保持不變的時候可使用compile 方法來編譯它(在獲得它的匹配模式后,這樣就可以在腳本中重復多次使用它。 你亦可以使用compile 方法來改變在運行期間改變正則表達式。例如,假如正則表達式發(fā)生變化, 你可以使用compile方法來重新編譯該對象來提高使用效率。 使用該方法將改變正則表達式的source, global和ignoreCasesource屬性的值。 constructor 指出建立對象原型的function。注意這個屬性
51、的值由函數(shù)本身提供,而不是一個字串包含RegExp的name.Property提供。 在JavaScript 1.1, NES 2.0以上版本提供 ECMA版本ECMA-262 描述:參考Object.constructor. exec方法 在指定的字符串運行匹配搜索。返回一個結果數(shù)組。 是RegExp的方法 在JavaScript 1.2, NES 3.0以上版本提供 語法: regexp.exec(strregexp(str 參數(shù): regexp,正則表達式的名稱,可以是一個變量名或文字定義串。 str,要匹配正則表達式的字符串,如果省略,將使用RegExp.input的值。 描述:就如在
52、語法描述中的一樣,正則表達工的exec方法能夠被直接調用(使用regexp.exec(str或者間接調用(使用regexp(str。 假如你只是運行以找出是否匹配,可以使用String搜索方法。 假如匹配成功,exec方法返回一個數(shù)組并且更新正則表達式對象屬性的值和預先定義的正則表達式對象、RegExp。如果匹配失敗,exec方法返回null。 請看下例: 下面是該腳本的返回值:對象 屬性/Index 描述 例子 myArray myArray的內(nèi)容 "dbBd", "bB", "d" index 基于0的匹配index 1 inpu
53、t 原始字符串 cdbBdbsbz 0 最后匹配的字符 dbBd 1, .n 用圓括號括住的匹配字符串,如果有的話。不限制括號的個數(shù)。 1 = bB 2 = d myRe lastIndex 開始下次匹配操作的index值 5 ignoreCase 指出"i"是否使用以忽略大小寫 true global 指出是否使用"g"標記來進行匹配所有可能的字串 true source 定義模式的文本字符串 d(b+(d RegExp lastMatch$& 最后匹配的字符 dbBd leftContext$Q 最新匹配前面的子串 c rightContex
54、t$' 最新匹配后面的子串 bsbz $1, .$9 圓括號內(nèi)的匹配子串,如果有的話。圓括號的個數(shù)不受限制,但RegExp只能保留最后9個 $1 = bB $2 = d lastParen $+ 最后一個加上圓括號的匹配子串,如果有的話 d 假如你的正則表達式使用了"g"標記,你可以多次使用exec 方法來連續(xù)匹配相同的串。當你這樣做的時候,新的匹配將從由正則表達式的lastIndex 屬性值確定的子串中開始。例如,假定你使用下面的腳本: 這個腳本顯示如下結果: Found abb. Next match starts at 3 Found ab. Next match sta
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版地理八年級下冊8.1《自然特征與農(nóng)業(yè)》聽課評課記錄1
- 湘教版數(shù)學八年級上冊2.5《全等三角形及其性質》聽評課記錄1
- 人教版數(shù)學九年級上冊聽評課記錄21.2.3《因式分解法》
- 生產(chǎn)設備技術轉讓協(xié)議書(2篇)
- 環(huán)保保潔服務協(xié)議書(2篇)
- 蘇科版數(shù)學七年級下冊12.3《互逆命題》聽評課記錄1
- 部編版八年級道德與法治下冊第四課《公民義務》第1課時《公民基本義務》聽課評課記錄
- 【部編人教版】八年級上冊歷史聽課評課記錄 第18課 從九一八事變到西安事變
- 浙教版數(shù)學七年級下冊1.3《平行線的判定》聽評課記錄2
- 2025年超低頻傳感器標定系統(tǒng)合作協(xié)議書
- 精神科護理技能5.3出走行為的防范與護理
- 采購管理學教學課件
- 《供應商質量會議》課件
- 江蘇省科技企業(yè)孵化器孵化能力評價研究的中期報告
- 畢業(yè)論文-山東省農(nóng)產(chǎn)品出口貿(mào)易的現(xiàn)狀及對策研究
- 供應商審核培訓教程
- 音樂思政課特色課程設計
- 初中數(shù)學思維能力的培養(yǎng)課件
- 酒精性肝硬化伴食管胃底靜脈曲張破裂出血的護理查房
- 無人機巡檢方案完整版
- Link 16協(xié)議開發(fā)和關鍵技術研究的開題報告
評論
0/150
提交評論