多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > jscript > JavaScript之RegExp屬性、方法及應用

JavaScript之RegExp屬性、方法及應用

來源:程序員人生   發布時間:2013-12-12 19:24:03 閱讀次數:2658次
egExp對象(至今為止我看到過的最通俗易懂和深入的正則表達式教程)JavaScript提供了一個RegExp對象來完成有關正則表達式的操作和功能,每一條正則表達式模式對應一個RegExp實例。有兩種方式可以創建RegExp對象的實例。

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

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

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

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

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

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

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

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

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

<head>

<title>創建正則表達式 </title>

<script language = "JavaScript">

var myString="這是第一個正則表達式的例子";

var myregex = new RegExp("一個"); // 創建正則表達式

if (myregex.test(myString)){

document.write("找到了指定的模式!");

}

else{

document.write("未找到指定的模式。");

}

</script>

</head><body></body>

</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+"re2="+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

<html>

<head>

<title>exec()方法應用</title>

<script language = "JavaScript">

var myString="aaa 111 bbb 222 ccc 1111 222ddd";

var regex = /111/; //創建正則表達式對象

var array=regex.exec(myString);

if (array){

var str="找到了匹配子串!"+"返回數組的值為:"+array+"數組元素個數:"

+array.length+"被搜索的字符串為:"+array.input

+"匹配子串的開始位置為:"+array.index

+"匹配子串后面第一個字符的位置為:"+regex.lastIndex;

alert(str);

}

else{

alert("未找到匹配子串!!");

}

</script>

<body></body>

</html>

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

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美黄色a级 | 最近中文字幕mv免费高清视频7 | 中文字幕乱码一区三区免费 | 日朝欧美亚洲精品 | 色人阁在线观看 | 亚洲欧美日韩成人 | 黄视频在线观看www 黄网站大全 | 欧美理论片在线观看一区二区 | 日韩精品片| 免费一区二区三区久久 | 日韩手机在线观看 | 日韩一区二区三区中文字幕 | 一区二区三区在线免费观看视频 | h免费看| 亚洲欧美成人综合在线 | 欧美在线天堂 | 日韩精品在线一区二区 | 免费大片黄在线观看日本 | 亚洲视频精品在线观看 | 欧美一区永久视频免费观看 | 一区二区三区四区无限乱码在线观看 | 欧美高清性xxxxhdvideosex | 最新中文字幕日本 | 性做久久久久久久久 | 丝袜无内写真福利视频 | 2018生活片性色生活片 | 亚洲爱| 欧美a级黄色 | 五月天开心中文字幕 | 亚洲国产成人精品女人久久久 | 国产精品视频一区二区三区不卡 | 色人阁色五月 | 中文字幕视频免费在线观看 | 日本久操| 黄色免费在线网站 | 亚洲福利一区二区三区 | 无遮挡很爽很污很黄很色的网站 | 国产亚洲精品自在久久不卡 | 亚洲精品老司机综合影院 | 在线国产视频观看 | 在线观看视频网站 |