注意:訪問本站需要Cookie和JavaScript支持!請設置您的瀏覽器! • 打開購物車 • 查看留言 • 付款方式 • 聯系我們 |
![]() |
首頁 | 電子入門 | 學單片機 | 免費資源 | 下載中心 | 商品列表 | 象棋在線 | 在線繪圖 | 加盟五一 | 加入收藏 | 設為首頁 |
選擇分類:當前分類——電腦編程 相關聯或者相類似的文章: 國產OS?中文CPU?(1213) JAVA教程 第一講 Java語言概述(2)(796) JAVA教程 第三講 Java語言中的面向對象特性(1)(785) vb的10個小技巧 (772) 學編程的人不能不看的好文章 (745) JAVASCRIPT簡介 (736) 絕對不知道你的瀏覽器還有這個功能!(722) JAVA對象入門第1章 對象入門(719) 給初學編程者的忠告 (702) JavaScript 對象與數組參考大全(650) JAVA教程 第三講 Java語言中的面向對象特性(2)(631) JAVA教程 第三講 Java語言中的面向對象特性(3)(587) VB開發Windows環境下的串行通信程序(560) SQL轉ACCESS解決自動編號問題(531) JAVA教程 Java語言基礎知識(452) JAVA教程 第二講 Java語言基礎知識(1)(364) DHTML參考手冊(一)(210) [精]5分鐘編寫一個ASP論壇(99) Cookies常用命令簡介(99) RegExp正則表達示用法(3) 首頁 前頁 后頁 尾頁 本站推薦: | RegExp正則表達示用法 今天寫程序的時候出現了一個問題,總是出現不允許操作的對象的錯誤,很奇怪之前一直運行沒有問題的程序,怎么會有不允許操作的對象呢?只能一步一步的查到底是那個對象不允許操作了,終于找到了這個對象,Set regEx = New RegExp,把所有的文件搜索了一遍,也沒有發現 RegExp,怪不得會出現不允許操作的對象了。
上網搜索RegExp,原來這是一個VBScript5.0的正則表達式對象。只要你的服務器安裝了IE5.x,就會VBScript5.0。VB中的replace和execute函數可以執行,那么這個為什么不能執行呢?猜想可能是改對象需要注冊組件,開始-運行:regsvr32 vbscript.dll 就OK了。 問題解決了,那么RegExp該如何使用呢?在網上找到了相關的說明。 我們在制作網站的時候,尤其是各種電子商務網站,首先都會讓用戶填寫一些表格來獲取注冊用戶的各種信息,因 為用戶有可能輸入各式各樣的信息,而有些不符合要求的數據會給我們的后端ASP處理程序帶來不必要的麻煩,甚至導致網站出現一些安全問題。因此我們在將這 些信息保存到網站的數據庫之前,要對這些用戶所輸入的信息進行數據的合法性校驗,以便后面的程序可以安全順利的執行。所以我們一般會在后端編寫一個ASP 的校驗程序來分析用戶輸入的數據是否是合法的。 或許有人會問了,使用運行在客戶端的JavaScript不是可以更好更快的 來校驗用戶的數據嗎?的確,這樣在大多的情況下是可以的,為什么是大多情況下呢?因為你編寫的JavaScript不一定可以完全正常的同時運行在IE以 及Netscape上面,因為微軟的Jscript并不全和JavaScript相同,再加上還有一些瀏覽器不一定和微軟以及Netscape兼容的很 好,所以很有可能在客戶端的Javascript不會精確的校驗用戶輸入的各種數據,而ASP程序是運行在服務器端的,只是和你的服務器的環境有關,無論 客戶端是什么瀏覽器,對于你的ASP程序來說都是沒有分別的,所以選擇使用后端的ASP程序來進行數據合法性的校驗是一個好的選擇。 在使用ASP來進行后端的數據合法性校驗的時候,有些人為滿足不同環境下面的數據校驗,編寫了很多的函數來實現,比如,我們想要校驗用戶輸入的URL 地址是否合法,是可以自己編寫一段代碼來逐個逐個字符的分析用戶輸入的信息,要分析的信息量小了,那還比較好辦,若是分析的條件千變萬化,那可就慘了,不 但要編寫很長很繁瑣的代碼,而且運行的效率極其低下,有沒有好的解決辦法呢?有,那就是VBScritp5.0提供的“正則表達式”對象,只要你的服務器 安裝了IE5.x,就會帶VBScript5.0。其實,“正則表達式”原本是Unix下面的專利,尤其是在Perl語言中使用的最為廣泛,正是由于“正 則表達式”的強大功能,才使得微軟慢慢將正則表達式對象移植到了視窗系統上面,利用 “正則表達式”對象,我們就可以非常方便的對各種數據進行合法性的校驗了。 首先,讓我們來了解一下究竟什么是VBScript的“正則表達式”對象,我們先來看一段程序: Function CheckExp(patrn, strng) Dim regEx, Matches ' 建立變量。 Set regEx = New RegExp '建立正則表達式。 regEx.Pattern = patrn '設置模式。 regEx.IgnoreCase = true '設置是否區分字符大小寫。 regEx.Global = True '設置全局可用性。 Matches = regEx.test(strng) '執行搜索。 CheckExp = matches End Function 在這段程序程序中,我們看到可以使用“New RegExp”來得到一個正則表達式對象,然后對這個對象進行正則匹配模板的賦值,也就是告訴正則表達式對象,你想要匹配一個什么樣子的模板,然后使用方 法Test來檢測待處理的數據究竟和我們給出的模版是否相匹配,如果不匹配,那就表明待處理的數據不是合法的數據,從而也就實現了數據合法性的校驗,我們 可以看出,使用一個設計合理的匹配模板,我們可以輕松的校驗一批格式類似的數據信息。 當然,VBScript5.0中的“正 則表達式”對象還有很多的其他的方法和屬性,比如方法Replace(),利用他我們就可以很快的實現現在網上很時髦的UBB風格的論壇以及BBS,這不 在我們討論范圍之內,以后再加以論述,我們現在就看看在數據校驗方面正則表達式對象常用的方法和屬性: 常用方法: Execute 方法 描述:對指定的字符串執行正則表達式搜索。 語法:object.Execute(string) Execute 方法的語法包括以下幾個部分: object:必需的?偸且粋 RegExp 對象的名稱。 string:必需的。要在其上執行正則表達式的文本字符串。 說明:正則表達式搜索的設計模式是通過 RegExp 對象的 Pattern 來設置的。Execute 方法返回一個 Matches 集合,其中包含了在 string 中找到的每一個匹配的 Match 對象。如果未找到匹配,Execute 將返回空的 Matches 集合。 Test方法 描述:對指定的字符串執行一個正則表達式搜索,并返回一個 Boolean 值指示是否找到匹配的模式。 語法:object.Test(string) Test 方法的語法包括以下幾個部分: object:必需的?偸且粋 RegExp 對象的名稱。 string:必需的。要執行正則表達式搜索的文本字符串。 說明:正則表達式搜索的實際模式是通過RegExp對象的Pattern屬性來設置的。RegExp.Global屬性對Test方法沒有影響。如果找到了匹配的模式,Test方法返回True;否則返回False。 常用屬性: Global屬性 描述:設置或返回一個 Boolean 值,該值指明在整個搜索字符串時模式是全部匹配還是只匹配第一個。 語法:object.Global [= True | False ] object 參數總是 RegExp 對象。如果搜索應用于整個字符串,Global 屬性的值為 True,否則其值為 False。默認的設置為 False。 IgnoreCase屬性 描述:設置或返回一個Boolean值,指明模式搜索是否區分大小寫。 語法:object.IgnoreCase [= True | False ] object 參數總是一個 RegExp 對象。如果搜索是區分大小寫的,則 IgnoreCase 屬性為 False;否則為 True。缺省值為 False。 Pattern屬性 描述:設置或返回被搜索的正則表達式模式。 這是一個最重要的屬性,我們主要是設置這個屬性來實現數據校驗的。 語法:object.Pattern [= "searchstring"] Pattern 屬性的語法包含以下幾個部分: object:必需的?偸且粋 RegExp 對象變量。 searchstring:可選的。被搜索的正則字符串表達式。它可能包含設置部分表格中的各種正則表達式字符。 設置:在書寫正則表達式的模式時使用了特殊的字符和序列。下表描述了可以使用的字符和序列,并給出了實例。 字符描述: \:將下一個字符標記為特殊字符或字面值。例如"n"與字符"n"匹配。"\n"與換行符匹配。序列"\"與"\"匹配,"\("與"("匹配。 ^ :匹配輸入的開始位置。 $ :匹配輸入的結尾。 * :匹配前一個字符零次或幾次。例如,"zo*"可以匹配"z"、"zoo"。 + :匹配前一個字符一次或多次。例如,"zo+"可以匹配"zoo",但不匹配"z"。 ? :匹配前一個字符零次或一次。例如,"a?ve?"可以匹配"never"中的"ve"。 .:匹配換行符以外的任何字符。 (pattern) 與模式匹配并記住匹配。匹配的子字符串可以從作為結果的 Matches 集合中使用 Item [0]...[n]取得。如果要匹配括號字符(和 ),可使用"\(" 或 "\)"。 x|y:匹配 x 或 y。例如 "z|food" 可匹配 "z" 或 "food"。"(z|f)ood" 匹配 "zoo" 或 "food"。 。簄 為非負的整數。匹配恰好n次。例如,"o" 不能與 "Bob 中的 "o" 匹配,但是可以與"foooood"中的前兩個o匹配。 。簄 為非負的整數。匹配至少n次。例如,"o"不匹配"Bob"中的"o",但是匹配"foooood"中所有的o。"o"等價于"o+"。"o"等價于"o*"。 。簃 和 n 為非負的整數。匹配至少 n 次,至多 m 次。例如,"o" 匹配 "fooooood"中前三個o。"o"等價于"o?"。 [xyz] :一個字符集。與括號中字符的其中之一匹配。例如,"[abc]" 匹配"plain"中的"a"。 [^xyz] :一個否定的字符集。匹配不在此括號中的任何字符。例如,"[^abc]" 可以匹配"plain"中的"p". [a-z] :表示某個范圍內的字符。與指定區間內的任何字符匹配。例如,"[a-z]"匹配"a"與"z"之間的任何一個小寫字母字符。 [^m-z] :否定的字符區間。與不在指定區間內的字符匹配。例如,"[m-z]"與不在"m"到"z"之間的任何字符匹配。 \b :與單詞的邊界匹配,即單詞與空格之間的位置。例如,"er\b" 與"never"中的"er"匹配,但是不匹配"verb"中的"er"。 \B :與非單詞邊界匹配。"ea*r\B"與"never early"中的"ear"匹配。 \d :與一個數字字符匹配。等價于[0-9]。 \D :與非數字的字符匹配。等價于[^0-9]。 \f :與分頁符匹配。 \n :與換行符字符匹配。 \r :與回車字符匹配。 \s :與任何白字符匹配,包括空格、制表符、分頁符等。等價于"[ \f\n\r\t\v]"。 \S :與任何非空白的字符匹配。等價于"[^ \f\n\r\t\v]"。 \t :與制表符匹配。 \v :與垂直制表符匹配。 \w :與任何單詞字符匹配,包括下劃線。等價于"[A-Za-z0-9_]"。 \W :與任何非單詞字符匹配。等價于"[^A-Za-z0-9_]"。 \num :匹配 num個,其中 num 為一個正整數。引用回到記住的匹配。例如,"(.)"匹配兩個連續的相同的字符。 \n:匹配 n,其中n 是一個八進制換碼值。八進制換碼值必須是 1, 2 或 3 個數字長。 例如,"" 和 "1" 都與一個制表符匹配。"11"等價于"1" 與 "1"。八進制換碼值不得超過 256。否則,只有前兩個字符被視為表達式的一部分。允許在正則表達式中使用ASCII碼。 \xn:匹配n,其中n是一個十六進制的換碼值。十六進制換碼值必須恰好為兩個數字長。例如,"\x41"匹配"A"。"\x041"等價于"\x04" 和 "1"。允許在正則表達式中使用 ASCII 碼。 好了,常用的方法和屬性就是這些了,上面的語法介紹的已經很詳細了,我們就沒有必要在啰嗦了,接下來我們來看看在具體的例子里面如何使用這些方法和屬性來 校驗數據的合法性,我們還是舉個例子吧,比如,我們想要對用戶輸入的電子郵件進行校驗,那么,什么樣的數據才算是一個合法的電子郵件呢?我可以這樣輸入: uestc95@263.net,當然我也會這樣輸入:xxx@yyy.com.cn,但是這樣的輸入就是非法的:xxx@@com.cn或者 @xxx.com.cn,等等,所以我們得出一個合法的電子郵件地址至少應當滿足以下幾個條件: 1. 必須包含一個并且只有一個符號“@” 2. 必須包含至少一個至多三個符號“.” 3. 第一個字符不得是“@”或者“.” 4. 不允許出現“@.”或者.@ 5. 結尾不得是字符“@”或者“.” 所以根據以上的原則和上面表中的語法,我們很容易的就可以得到需要的模板如下:"(\w)+[@](\w)+[.](\w)+" 接下來我們仔細分析一下這個模板,首先“\w”表示郵件的開始字符只能是包含下劃線的單詞字符,這樣,滿足了第三個條件;“[@]”表示在電子郵件中應 當匹配并且只能匹配一次字符“@”,滿足了條件一;同樣的“[.]”表示在電子郵件中至少匹配1個至多匹配3個字符“.” ,滿足了第二個條件;模板最后的“(\w)+”表示結尾的字符只能是包含下劃線在內的單詞字符,滿足了條件五;模板中間的“(\w)+”滿足了條件四。 然后,我們就直接調用剛才的那個函數CheckExp("(\w)+[@](\w)+[.](\w)+",待校驗的字符串)就好了,如果返回True就 表示數據是合法的,否則就是不正確的,怎么樣,簡單吧。我們還可以寫出來校驗身份證號碼的模板:"([0-9])";校驗URL的模板:"^http: //((\w)+[.])"等等;我們可以看到,這些模板為我們提供了很好的可重利用的模塊,利用自己或者別人提供的各種模板,我們就可以方便快捷的進行 數據的合法性校驗了,相信你一定會寫出非常通用的模板的。 這樣,我們只要定制不同的模板,就可以實現對不同數據的合法性校驗了。所以,正則表達式對象中最重要的屬性就是:“Pattern”屬性,只要真正掌握了這個屬性,才可以自由的運用正則表達式對象來為我們的數據校驗進行服務。-------------------------------------------RegExp對象提供簡單的正則表達式支持功能。 RegExp對象的用法: Function RegExpTest(patrn, strng) Dim regEx, Match, Matches ' 建立變量。 Set regEx = New RegExp ' 建立正則表達式。 regEx.Pattern = patrn ' 設置模式。 regEx.IgnoreCase = True ' 設置是否區分字符大小寫。 regEx.Global = True ' 設置全局可用性。 Set Matches = regEx.Execute(strng) ' 執行搜索。 For Each Match in Matches ' 遍歷匹配集合。 RetStr = RetStr & "Match found at position " RetStr = RetStr & Match.FirstIndex & ". Match Value is '" RetStr = RetStr & Match.Value & "'." & vbCRLF Next RegExpTest = RetStr End Function MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4")) RegExp 對象的屬性 ◎ Global屬性 Global屬性設置或返回一個 Boolean 值,該值指明在整個搜索字符串時模式是全部匹配還是只匹配第一個。 語法 object.Global [= True | False ] object 參數總是 RegExp 對象。如果搜索應用于整個字符串,Global 屬性的值為 True,否則其值為 False。默認的設置為 True。 Global 屬性的用法(改變賦予 Global 屬性的值并觀察其效果): Function RegExpTest(patrn, strng) Dim regEx ' 建立變量。 Set regEx = New RegExp ' 建立規范表達式。 regEx.Pattern = patrn ' 設置模式。 regEx.IgnoreCase = True ' 設置是否區分字母的大小寫。 regEx.Global = True ' 設置全程性質。 RegExpTest = regEx.Execute(strng) ' 執行搜索。 End Function MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4")) ◎ IgnoreCase屬性 IgnoreCase屬性設置或返回一個Boolean值,指明模式搜索是否區分大小寫。 語法 object.IgnoreCase [= True | False ] object 參數總是一個 RegExp 對象。如果搜索是區分大小寫的,則 IgnoreCase 屬性為 False;否則為 True。缺省值為 True。 IgnoreCase 屬性的用法(改變賦予 IgnoreCase 屬性的值以觀察其效果): Function RegExpTest(patrn, strng) Dim regEx ' 建立變量。 Set regEx = New RegExp ' 建立正則表達式。 regEx.Pattern = patrn ' 設置模式。 regEx.IgnoreCase = True ' 設置是否區分大小寫。 RegExpTest = regEx.Execute(strng) ' 執行搜索。 End Function MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4")) ◎ Pattern屬性 Pattern屬性設置或返回被搜索的正則表達式模式。 語法 object.Pattern [= "searchstring"] Pattern 屬性的語法包含以下幾個部分: 語法說明: object 必需的?偸且粋 RegExp 對象變量。 searchstring 可選的。被搜索的正則字符串表達式。它可能包含設置部分表格中的各種正則表達式字符。 設置 在書寫正則表達式的模式時使用了特殊的字符和序列。下面描述了可以使用的字符和序列,并給出了實例。 \ 將下一個字符標記為特殊字符或字面值。例如"n"與字符"n"匹配。"\n"與換行符匹配。序列"\"與"\"匹配對面,"\("與"("匹配。 ^ 匹配輸入的開始位置。 $ 匹配輸入的結尾。 * 匹配前一個字符零次或幾次。例如,"zo*"可以匹配"z"、"zoo"。 + 匹配前一個字符一次或多次。例如,"zo+"可以匹配"zoo",但不匹配"z"。 ? 匹配前一個字符零次或一次。例如,"a?ve?"可以匹配"never"中的"ve"。 . 匹配換行符以外的任何字符。 (pattern) 與模式匹配并記住匹配。匹配的子字符串可以從作為結果的 Matches 集合中使用 Item [0]...[n]取得。如果要匹配括號字符(和 ),可使用"\(" 或 "\)"。 x|y 匹配 x 或 y。例如 "z|food" 可匹配 "z" 或 "food"。"(z|f)ood" 匹配 "zoo" 或 "food"。 n 為非負的整數。匹配恰好n次。例如,"o" 不能與 "Bob 中的 "o" 匹配,但是可以與"foooood"中的前兩個o匹配。 {n,} n 為非負的整數。匹配至少n次。例如,"o{2,}"不匹配"Bob"中的"o",但是匹配"foooood"中所有的o。"o{1,}"等價于"o+"。"o{0,}"等價于"o*"。 {n,m} m 和 n 為非負的整數。匹配至少 n 次,至多 m 次。例如,"o{1,3}" 匹配 "fooooood"中前三個o。"o{0,1}"等價于"o?"。 [xyz] 一個字符集。與括號中字符的其中之一匹配。例如,"[abc]" 匹配"plain"中的"a"。 [^xyz] 一個否定的字符集。匹配不在此括號中的任何字符。例如,"[^abc]" 可以匹配"plain"中的"p". [a-z] 表示某個范圍內的字符。與指定區間內的任何字符匹配。例如,"[a-z]"匹配"a"與"z"之間的任何一個小寫字母字符。 [^m-z] 否定的字符區間。與不在指定區間內的字符匹配。例如,"[m-z]"與不在"m"到"z"之間的任何字符匹配。 \b 與單詞的邊界匹配,即單詞與空格之間的位置。例如,"er\b" 與"never"中的"er"匹配,但是不匹配"verb"中的"er"。 \B 與非單詞邊界匹配。"ea*r\B"與"never early"中的"ear"匹配。 \d 與一個數字字符匹配。等價于[0-9]。 \D 與非數字的字符匹配。等價于[^0-9]。 \f 與分頁符匹配。 \n 與換行符字符匹配。 \r 與回車字符匹配。 \s 與任何白字符匹配,包括空格、制表符、分頁符等。等價于"[ \f\n\r\t\v]"。 \S 與任何非空白的字符匹配。等價于"[^ \f\n\r\t\v]"。 \t 與制表符匹配。 \v 與垂直制表符匹配。 \w 與任何單詞字符匹配,包括下劃線。等價于"[A-Za-z0-9_]"。 \W 與任何非單詞字符匹配。等價于"[^A-Za-z0-9_]"。 \num 匹配 num個,其中 num 為一個正整數。引用回到記住的匹配。例如,"(.)"匹配兩個連續的相同的字符。 \n 匹配 n,其中n 是一個八進制換碼值。八進制換碼值必須是 1, 2 或 3 個數字長。例如,"" 和 "1" 都與一個制表符匹配。"11"等價于"1" 與 "1"。八進制換碼值不得超過 256。否則,只有前兩個字符被視為表達式的一部分。允許在正則表達式中使用ASCII碼。 \xn 匹配n,其中n是一個十六進制的換碼值。十六進制換碼值必須恰好為兩個數字長。例如,"\x41"匹配"A"。"\x041"等價于"\x04" 和 "1"。允許在正則表達式中使用 ASCII 碼。 Pattern 屬性的用法: Function RegExpTest(patrn, strng) Dim regEx ' 建立變量。 Set regEx = New RegExp ' 建立正則表達式。 regEx.Pattern = patrn ' 設置模式。 regEx.IgnoreCase = True ' 設置是否區分大小寫。 RegExpTest = regEx.Execute(strng) ' 執行搜索。 End Function MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4")) RegExp對象的方法 ◎ Execute方法 Execute方法對指定的字符串執行正則表達式搜索。 語法 object.Execute(string) 語法部分描述 object 必需的?偸且粋 RegExp 對象的名稱。 string 必需的。要在其上執行正則表達式的文本字符串。 說明 正則表達式搜索的設計模式是通過 RegExp 對象的 Pattern 來設置的。 Execute 方法返回一個 Matches 集合,其中包含了在 string 中找到的每一個匹配的 Match 對象。如果未找到匹配,Execute 將返回空的 Matches 集合。 Execute 方法的用法: Function RegExpTest(patrn, strng) Dim regEx ' 建立變量。 Set regEx = New RegExp ' 建立正則表達式。 regEx.Pattern = patrn ' 設置模式。 regEx.IgnoreCase = False ' 設置區分大小寫。 regEx.Global = True ' 搜索全部匹配。 RegExpTest = regEx.Execute(strng) ' 執行搜索。 End Function MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4")) ◎ Replace方法 Replace方法替換在正則表達式查找中找到的文本。 語法 object.Replace(string1, string2) 語法部分描述 object 必需的?偸且粋 RegExp 對象的名稱。 string1 必需的。string1 是將要進行文本替換的字符串。 string2 必需的。 string2 是替換文本字符串。 說明 被替換的文本的實際模式是通過 RegExp 對象的 Pattern 屬性設置的。 Replace 方法返回 string1 的副本,其中的 RegExp.Pattern 文本已經被替換為 string2。如果沒有找到匹配的文本,將返回原來的 string1 的副本。 eplace 方法的用法: Function ReplaceTest(patrn, replStr) Dim regEx, str1 ' 建立變量。 str1 = "The quick brown fox jumped over the lazy dog." Set regEx = New RegExp ' 建立正則表達式。 regEx.Pattern = patrn ' 設置模式。 regEx.IgnoreCase = True ' 設置是否區分大小寫。 ReplaceTest = regEx.Replace(str1, replStr) ' 作替換。 End Function MsgBox(ReplaceTest("fox", "cat")) ' 將 'fox' 替換為 'cat'。 ;另外,Replace 方法在模式中替換 subexpressions 。 下面對以前示例中函數的調用,替換了原字符串中的所有字對: MsgBox(ReplaceText("(\S+)(\s+)(\S+)", "")) ' Swap pairs of words. ◎ Test方法 Test方法對指定的字符串執行一個正則表達式搜索,并返回一個 Boolean 值指示是否找到匹配的模式。 語法 object.Test(string) 語法部分描述 object 必需的?偸且粋 RegExp 對象的名稱。 string 必需的。要執行正則表達式搜索的文本字符串。 說明 正則表達式搜索的實際模式是通過RegExp對象的Pattern屬性來設置的。RegExp.Global屬性對Test方法沒有影響。 如果找到了匹配的模式,Test方法返回True;否則返回False。 Test 方法的用法: Function RegExpTest(patrn, strng) Dim regEx, retVal ' 建立變量。 Set regEx = New RegExp ' 建立正則表達式。 regEx.Pattern = patrn ' 設置模式。 regEx.IgnoreCase = False ' 設置是否區分大小寫。 retVal = regEx.Test(strng) ' 執行搜索測試。 If retVal Then RegExpTest = "找到一個或多個匹配。" Else RegExpTest = "未找到匹配。" End If End Function MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4")) RegExp 對象 構造函數 new RegExp(“表達式”,”屬性”) FF: Firefox, N: Netscape, IE: Internet Explorer;數字表示此版本以后支持 屬性 描述 FF N IE global RegExp 對象是否具有標志 g。 1 4 4 ignoreCase RegExp 對象是否具有標志 i。 1 4 4 lastIndex 一個整數,標示開始下一次匹配的字符位置。 1 4 4 multiline RegExp 對象是否具有標志 m。 1 4 4 source 正則表達式的源文本。 1 4 4 方法 描述 FF N IE exec 檢索字符串中指定的值。返回找到的值(存放于數組中)。 1 4 4 test 檢索字符串中指定的值。返回 true 或 false。 1 4 4 說明: 1.exec() 找到了匹配的文本,則返回一個結果數組。否則,返回 null。此數組的第 0 個元素是與正則表達式相匹配的文本,第 1 個元素是與 RegExpObject 的第 1 個子表達式相匹配的文本(如果有的話),第 2 個元素是與 RegExpObject 的第 2 個子表達式相匹配的文本(如果有的話),以此類推。除了數組元素和 length 屬性之外,exec() 方法還返回兩個屬性。index 屬性聲明的是匹配文本的第一個字符的位置。input 屬性則存放的是被檢索的字符串 string。 2.使用過的正則對象會從上次匹配位置開始新匹配。 3.如果構造函數中屬性包含i,會把所有匹配項強制轉換為小寫。 4.正則對象中不包含g的話只處理一次匹配。 簡單示例: 實例化一個RegExp: var reg = new RegExp('[a-z]+','img'); // 檢測包含連續字母的字符串 var str = '12345abcde67890FGHIJK_)(*&^%$#@!'; reg.test(str); // 返回true reg.lastIndex = 0; // 如果繼續使用reg而沒有重新實例化,reg會從上次的匹配項以后查找,故需要重置 matches = []; while (match = reg.exec(str)) { matches.push(match[0]); // match為一個數組: match[0]為本次匹配到的字符串;match[‘input’]為被匹配字符串,即str;match[‘index’]為本次匹配到的字符串的位置;match[n](n>0)為正則表達式中的第n個子式匹配內容(如果有的話) } alert(matches.join(',')); // abcde,fghijk 說明:FGHIJK也被匹配了是因為屬性中包含 i:不區分大小寫。 支持正則表達式的 String 對象的方法 方法 描述 FF N IE search 檢索與正則表達式相匹配的值,返回位置。 1 4 4 match 找到一個或多個(含屬性g)正在表達式的匹配,返回字符串或數組 1 4 4 replace 替換與正則表達式匹配的子串,返回替換后的字符串。 1 4 4 split 把字符串分割為字符串數組,返回數組。 1 4 4 說明: 1. replace函數的第二個參數可以是一個函數,此時會調用此函數處理每一次匹配。 2. replace函數的正則參數如果不包含g屬性,將只替換第一個匹配。 簡單示例: 將 str中的url添加上html a標簽。(注意:此demo代碼并不實用) var reg = new RegExp("([ftph]+://[a-zA-Z0-9\._-]+)","mg"); str = str.replace(reg,""); var sentence = "I am a sentence!"; var words = sentence.split(/\s+/); // words=[I,am,a,sentence!] 主要參考:http://www.w3school.com.cn/js/jsref_obj_regexp.asp 其它鏈接:http://regexlib.com/Default.aspx // 如其名,Regular Expression Library 1、 本站不保證以上觀點正確,就算是本站原創作品,本站也不保證內容正確。 2、如果您擁有本文版權,并且不想在本站轉載,請書面通知本站立即刪除并且向您公開道歉! |
本站協議。
版權信息。
關于我們。
本站地圖。
營業執照。
發票說明。
付款方式。
聯系方式
深圳市寶安區西鄉五壹電子商行——粵ICP備16073394號-1;地址:深圳西鄉河西四坊183號;郵編:518102 E-mail:51dz$163.com($改為@);Tel:(0755)27947428 工作時間:9:30-12:00和13:30-17:30和18:30-20:30,無人接聽時可以再打手機13537585389 |