亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Regex > 正文

JavaScript 正則表達式之RegExp屬性、方法及應用分析

2020-03-16 21:14:28
字體:
來源:轉載
供稿:網友

RegExp對象(至今為止我看到過的最通俗易懂和深入的正則表達式教程)JavaScript提供了一個RegExp對象來完成有關正則表達式的操作和功能,每一條正則表達式模式對應一個RegExp實例。有兩種方式可以創建RegExp對象的實例。

使用RegExp的顯式構造函數,語法為:new RegExp("pattern"[,"flags"])。

使用RegExp的隱式構造函數,采用純文本格式:/pattern/[flags]。

pattern部分為要使用的正則表達式模式文本,是必須的。在第一種方式中,pattern部分以JavaScript字符串的形式存在,需要使用雙引號或單引號括起來;在第二種方式中,pattern部分嵌套在兩個“/”之間,不能使用引號。

flags部分設置正則表達式的標志信息,是可選項。如果設置flags部分,在第一種方式中,以字符串的形式存在;在第二種方式中,以文本的形式緊接在最后一個“/”字符之后。flags可以是以下標志字符的組合。

g是全局標志。如果設置了這個標志,對某個文本執行搜索和替換操作時,將對文本中所有匹配的部分起作用。如果不設置這個標志,則僅搜索和替換最早匹配的內容。

i是忽略大小寫標志。如果設置了這個標志,進行匹配比較時,將忽略大小寫。

m是多行標志。如果不設置這個標志,那么元字符“^”只與整個被搜索字符串的開始位置相匹配,而元字符“$”只與被搜索字符串的結束位置相匹配。如果設置 了這個標志,“^”還可以與被搜索字符串中的“/n”或“/r”之后的位置(即下一行的行首)相匹配,而“$”還可以與被搜索字符串中的“/n”或“/ r”之后的位置(即下一行的行尾)相匹配。

代碼8.1是一個創建正則表達式的例子。

代碼8.1 創建正則表達式:8.1.htm

 

  1.   
  2. <html>  
  3. <head>  
  4. <title>創建正則表達式 </title>  
  5. <script language = "JavaScript">  
  6. var myString="這是第一個正則表達式的例子";  
  7. var myregex = new RegExp("一個"); // 創建正則表達式  
  8. if (myregex.test(myString)){  
  9. document.write("找到了指定的模式!");  
  10. }  
  11. else{  
  12. document.write("未找到指定的模式。");  
  13. }  
  14. </script>  
  15. </head><body></body>  
  16. </html>  
由于JavaScript字符串中的“/”是一個轉義字符,因此,使用顯式構造函數創建RegExp實例對象時,應將原始正則表達式中的“/”用“//”替換。例如,在代碼8.2中的兩條語句是等價的。 
代碼8.2 轉義字符中的“/”:8.2.htm 
復制代碼代碼如下:

<script language="javascript"> 
var re1 = new RegExp("//d{5}"); 
var re2 = //d{5}/; 
alert("re1="+re1+"/nre2="+re2); 
</script> 

可以看出,兩者結果相同。 
由于正則表達式模式文本中的轉義字符也是“/”,如果正則表達式中要匹配原義字符“/”,在正則表達式模式文本中要以“//”來表示,當使用顯式構造函數的方式創建RegExp實例對象的時候,就需要使用“////”來表示原義字符“/”。 
var re = new RegExp(////)。 
8.4 RegExp對象的屬性 
RegExp對象的屬性分為靜態屬性和實例屬性。下面分別進行介紹。 
8.4.1 靜態屬性 
(1)index屬性。是當前表達式模式首次匹配內容的開始位置,從0開始計數。其初始值為-1,每次成功匹配時,index屬性都會隨之改變。 
(2)input屬性。返回當前所作用的字符串,可以簡寫為$_,初始值為空字符串""。 
(3)lastIndex屬性。是當前表達式模式首次匹配內容中最后一個字符的下一個位置,從0開始計數,常被作為繼續搜索時的起始位置,初始值為-1,表示從起始位置開始搜索,每次成功匹配時,lastIndex屬性值都會隨之改變。 
(4)lastMatch屬性。是當前表達式模式的最后一個匹配字符串,可以簡寫為$&。其初始值為空字符串""。在每次成功匹配時,lastMatch屬性值都會隨之改變。 
(5)lastParen屬性。如果表達式模式中有括起來的子匹配,是當前表達式模式中最后的子匹配所匹配到的子字符串,可以簡寫為$+。其初始值為空字符串""。每次成功匹配時,lastParen屬性值都會隨之改變。 
(6)leftContext屬性。是當前表達式模式最后一個匹配字符串左邊的所有內容,可以簡寫為$`(其中“'”為鍵盤上“Esc”下邊的反單引號)。初始值為空字符串""。每次成功匹配時,其屬性值都會隨之改變。 
(7)rightContext屬性。是當前表達式模式最后一個匹配字符串右邊的所有內容,可以簡寫為$'。初始值為空字符串""。每次成功匹配時,其屬性值都會隨之改變。 
(8)$1…$9屬性。這些屬性是只讀的。如果表達式模式中有括起來的子匹配,$1…$9屬性值分別是第1個到第9個子匹配所捕獲到的內容。如果有 超過9個以上的子匹配,$1…$9屬性分別對應最后的9個子匹配。在一個表達式模式中,可以指定任意多個帶括號的子匹配,但RegExp對象只能存儲最后 的9個子匹配的結果。在RegExp實例對象的一些方法所返回的結果數組中,可以獲得所有圓括號內的子匹配結果。 
8.4.2 實例屬性 
(1)global屬性。返回創建RegExp對象實例時指定的global標志(g)的狀態。如果創建RegExp對象實例時設置了g標志,該屬性返回True,否則返回False,默認值為False。 
(2)ignoreCase屬性。返回創建RegExp對象實例時指定的ignoreCase標志(i)的狀態。如果創建RegExp對象實例時設置了i標志,該屬性返回True,否則返回False,默認值為False。 
(3)multiLine屬性。返回創建RegExp對象實例時指定的multiLine標志(m)的狀態。如果創建RegExp對象實例時設置了m標志,該屬性返回True,否則返回False,默認值為False。 
(4)source屬性。返回創建RegExp對象實例時指定的表達式文本字符串。 
8.5 RegExp對象的方法 
RegExp對象的常用方法有test、exec和compile,本節介紹這些方法的功能和用法。最后,對RegExp對象的屬性和方法進行一個綜合舉例。 
8.5.1 test方法 
語法格式為test(str)。該方法檢查一個字符串中是否存在創建RegExp對象實例時所指定的表達式模 式,如果存在就返回True,否則返回False。如果找到匹配項,則會更新RegExp對象中的有關靜態屬性,以反映匹配情況。關于該方法的使用,后面 的8.10節中會經常用到,這里不再單獨舉例。 
8.5.2 exec方法 
語法格式為exec(str)。該方法使用創建RegExp對象實例時所指定的表達式模式對一個字符串進行搜索,并返回一個包含搜索結果的數組。 
如果為正則表達式設置了全局標志(g),可以通過多次調用exec和test方法在字符串中進行連續搜索,每次都是從RegExp對象的lastIndex屬性值指定的位置開始搜索字符串。 
如果沒有設置全局標志(g),則exec和test方法忽略RegExp對象的lastIndex屬性值,從字符串的起始位置開始搜索。 
如果exec方法沒有找到匹配,返回值為null;如果找到匹配,則返回一個數組,并更新RegExp對象中有關靜態屬性以反映匹配情況。返回數組中的元素0包含了完整的匹配結果,而元素1~n依次是表達式模式中定義的各個子匹配的結果。 
exec方法返回的數組有3個屬性,分別是input、index和lastIndex。 
input屬性是整個被搜索的字符串。 
index屬性是指匹配在整個被搜索字符串中的位置。 
lastIndex屬性是指匹配的子字符串的最后一個字符的下一個字符位置。 
代碼8.3是對該方法的應用舉例。 
代碼8.3 exec()方法應用:8.3.htm 

  1.   
  2. <html>  
  3. <head>  
  4. <title>exec()方法應用</title>  
  5. <script language = "JavaScript">  
  6. var myString="aaa 111 bbb 222 ccc 1111 222ddd";  
  7. var regex = /111/; //創建正則表達式對象  
  8. var array=regex.exec(myString);  
  9. if (array){  
  10. var str="找到了匹配子串!"+"/n返回數組的值為:"+array+"/n數組元素個數:"  
  11. +array.length+"/n被搜索的字符串為:"+array.input  
  12. +"/n匹配子串的開始位置為:"+array.index  
  13. +"/n匹配子串后面第一個字符的位置為:"+regex.lastIndex;  
  14. alert(str);  
  15. }  
  16. else{  
  17. alert("未找到匹配子串?。?quot;);  
  18. }  
  19. </script>  
  20. <body></body>  
  21. </html>  


8.5.3 compile方法 
語法格式為compile("pattern"[,"flags"])。該方法可以更換RegExp對 象實例所使用的表達式模式,并將新的表達式模式編譯為內部格式,從而使以后的匹配過程執行更快。如果要在循環中重復使用某個表達式,對其進行編譯將使執行 加速。但是,如果在程序中使用了任何其他表達式模式后,再使用原來編譯過的表達式模式,則這種編譯毫無益處。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
正在播放欧美视频| 亚州国产精品久久久| 欧美麻豆久久久久久中文| 亚洲精品福利免费在线观看| 中文字幕精品网| 亚洲精品99999| 国产亚洲精品久久久久久| 欧美日韩另类字幕中文| 亚洲精品午夜精品| 久久久久这里只有精品| 久久中文久久字幕| 亚洲欧洲国产一区| 欧美成人网在线| 国产精品69久久| 国产精品99一区| 欧美国产日韩精品| 国产午夜精品视频| 国产丝袜一区视频在线观看| 久久伊人91精品综合网站| 亚洲欧洲一区二区三区在线观看| 自拍视频国产精品| 亚洲风情亚aⅴ在线发布| 国产亚洲美女久久| 亚洲精品美女在线观看播放| 亚洲欧美视频在线| 欧美专区第一页| 亚洲精品乱码久久久久久按摩观| www.日韩av.com| 日韩亚洲第一页| 亚洲午夜精品视频| 国产一区二区精品丝袜| 欧美午夜精品久久久久久久| 欧美国产视频日韩| 亚洲成人av资源网| 久久精品国产99国产精品澳门| 国内成人精品视频| 青青草一区二区| 国产97在线|日韩| 国产精品色悠悠| 久久久久久久久电影| 日韩毛片中文字幕| 欧美精品videossex88| 亚洲精选在线观看| 91成品人片a无限观看| 亚洲欧美日韩第一区| 成人欧美在线观看| 国产精品亚洲视频在线观看| 国内偷自视频区视频综合| 欧美成人激情视频免费观看| 久久久女人电视剧免费播放下载| 成人a级免费视频| 亚洲aⅴ日韩av电影在线观看| 26uuu另类亚洲欧美日本一| 国产亚洲精品久久| 亚洲精品www久久久| 日日狠狠久久偷偷四色综合免费| 国产成人精品在线视频| 欧美在线一级视频| 超在线视频97| 91精品国产电影| 情事1991在线| 亚洲天堂av电影| 国产精品激情av电影在线观看| 欧美激情亚洲综合一区| 亚洲国产精品高清久久久| 亚洲第一页自拍| 国产精品高潮呻吟久久av野狼| 九九久久久久99精品| 欧美激情视频在线| 亚洲国产精品中文| 久久久成人av| 日韩禁在线播放| 日韩高清中文字幕| 国产精品美女无圣光视频| 国产亚洲视频在线观看| 亚洲自拍另类欧美丝袜| 3344国产精品免费看| 国产精品永久免费视频| 亚洲缚视频在线观看| 国产欧美亚洲精品| 亚洲精品久久久久久久久久久| 日韩av网址在线观看| 中文字幕日韩专区| 26uuu日韩精品一区二区| 欧美成aaa人片免费看| 国产精品日韩久久久久| 久久精品中文字幕一区| 亚洲一区久久久| 欧美激情三级免费| 亚洲老司机av| 欧美黑人性生活视频| 欧美最近摘花xxxx摘花| 一区二区三区回区在观看免费视频| 97视频在线观看成人| 国产999在线观看| 668精品在线视频| 一道本无吗dⅴd在线播放一区| 国产精品亚发布| 国产精品中文字幕在线| 亚洲成色999久久网站| 亚洲一区第一页| 国产免费亚洲高清| 77777少妇光屁股久久一区| 中文日韩电影网站| 国产精品十八以下禁看| 欧美在线免费观看| 久热精品视频在线观看| 狠狠做深爱婷婷久久综合一区| 久热精品视频在线免费观看| 高潮白浆女日韩av免费看| 国产精品第二页| 日韩av在线免费| 亚洲天堂成人在线视频| 亚洲人成电影网站色…| 国内精品久久久久久| 国产一区视频在线播放| 色综合久久久久久中文网| 亚洲第一福利在线观看| 深夜福利亚洲导航| 国产亚洲精品美女久久久久| 欧美体内谢she精2性欧美| 国产精品99久久久久久久久| 亚洲xxxxx性| 欧美成人午夜剧场免费观看| 日韩在线观看免费av| 久久视频免费观看| 亚洲国产毛片完整版| 久久国产精彩视频| 欧美性猛交99久久久久99按摩| 久久国产精品影片| 91精品国产综合久久香蕉| 久久久久久久久久久久久久久久久久av| 97人人爽人人喊人人模波多| 91成人国产在线观看| 久久69精品久久久久久久电影好| 精品国产一区二区三区久久久| 日韩av在线天堂网| 九九精品在线视频| 一区二区三区四区在线观看视频| 国产精品一区二区三区久久| 久久久精品视频在线观看| 欧美性极品少妇精品网站| 92裸体在线视频网站| 国产精品三级网站| 精品一区二区三区电影| 中文字幕日韩av综合精品| 久久久精品影院| 亚洲石原莉奈一区二区在线观看| 欧美成人精品激情在线观看| 国产成人一区二区| 国产性色av一区二区| 国产在线精品成人一区二区三区| 91精品国产91久久久久久| 一区二区成人精品| 色婷婷综合久久久久中文字幕1| 日韩精品中文字| 亚洲精品国产拍免费91在线| 亚洲精品电影久久久| 亚洲综合精品伊人久久| 国产精品久久久久久久久久新婚| 国产精品视频午夜| 亚洲韩国日本中文字幕| 亚洲free性xxxx护士白浆| 丰满岳妇乱一区二区三区|