ASP正則匹配替換函數(shù)代碼
本文要介紹的函數(shù)名為RegexIsMatch,大家一看名稱(chēng)就知道用正則表達(dá)式相關(guān),并且貌似就是來(lái)做正則匹配的功能。
這個(gè)asp的正則表達(dá)式匹配函數(shù)有兩個(gè)參數(shù)。subject要處理的目標(biāo)對(duì)象,即源字符串。pattern匹配的正則表達(dá)式。也就是說(shuō)這個(gè)RegexReplace函數(shù)會(huì)在subject中,通過(guò)pattern進(jìn)行正則匹配,如果找到匹配項(xiàng),則返回True,否則為False。
1、返回true或者false 用來(lái)字符串中是否有匹配的內(nèi)容
<% Function RegexIsMatch(subject, pattern) Dim reg Set reg = New RegExp reg.Global = True reg.MultiLine = True reg.Pattern = pattern RegexIsMatch = reg.Test(subject) End Function %>
2、asp中根據(jù)正則找到匹配的并進(jìn)行替換的函數(shù)
Function ReplaceTest(str,patrn,replStr) Dim regEx, str1 Set regEx = New RegExp regEx.Pattern = patrn regEx.IgnoreCase = True ReplaceTest = regEx.Replace(str, replStr) End Function ip="127.0.0.1" response.write(ReplaceTest(ip,"\d+", "cat"))
ASP正則表達(dá)式用法
RegExp對(duì)象提供簡(jiǎn)單的正則表達(dá)式支持功能。
RegExp對(duì)象的用法:
Function RegExpTest(patrn, strng) Dim regEx, Match, Matches ' 建立變量。 Set regEx = New RegExp ' 建立正則表達(dá)式。 regEx.Pattern = patrn ' 設(shè)置模式。 regEx.IgnoreCase = True ' 設(shè)置是否區(qū)分字符大小寫(xiě)。 regEx.Global = True ' 設(shè)置全局可用性。 Set Matches = regEx.Execute(strng) ' 執(zhí)行搜索。 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 對(duì)象的屬性
◎ Global屬性
Global屬性設(shè)置或返回一個(gè) Boolean 值,該值指明在整個(gè)搜索字符串時(shí)模式是全部匹配還是只匹配第一個(gè)。
語(yǔ)法
object.Global [= True | False ]
object 參數(shù)總是 RegExp 對(duì)象。如果搜索應(yīng)用于整個(gè)字符串,Global 屬性的值為 True,否則其值為 False。默認(rèn)的設(shè)置為 True。Global 屬性的用法(改變賦予 Global 屬性的值并觀察其效果):
Function RegExpTest(patrn, strng) Dim regEx ' 建立變量。 Set regEx = New RegExp ' 建立規(guī)范表達(dá)式。 regEx.Pattern = patrn ' 設(shè)置模式。 regEx.IgnoreCase = True ' 設(shè)置是否區(qū)分字母的大小寫(xiě)。 regEx.Global = True ' 設(shè)置全程性質(zhì)。 RegExpTest = regEx.Execute(strng) ' 執(zhí)行搜索。 End Function MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
◎ IgnoreCase屬性
IgnoreCase屬性設(shè)置或返回一個(gè)Boolean值,指明模式搜索是否區(qū)分大小寫(xiě)。
語(yǔ)法
object.IgnoreCase [= True | False ]
object 參數(shù)總是一個(gè) RegExp 對(duì)象。如果搜索是區(qū)分大小寫(xiě)的,則 IgnoreCase 屬性為 False;否則為 True。缺省值為 True。
IgnoreCase 屬性的用法(改變賦予 IgnoreCase 屬性的值以觀察其效果):
Function RegExpTest(patrn, strng) Dim regEx ' 建立變量。 Set regEx = New RegExp ' 建立正則表達(dá)式。 regEx.Pattern = patrn ' 設(shè)置模式。 regEx.IgnoreCase = True ' 設(shè)置是否區(qū)分大小寫(xiě)。 RegExpTest = regEx.Execute(strng) ' 執(zhí)行搜索。 End Function MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
◎ Pattern屬性
Pattern屬性設(shè)置或返回被搜索的正則表達(dá)式模式。
語(yǔ)法
object.Pattern [= "searchstring"]
Pattern 屬性的語(yǔ)法包含以下幾個(gè)部分:
語(yǔ)法說(shuō)明:
object 必需的??偸且粋€(gè) RegExp 對(duì)象變量。
searchstring 可選的。被搜索的正則字符串表達(dá)式。它可能包含設(shè)置部分表格中的各種正則表達(dá)式字符。
設(shè)置
在書(shū)寫(xiě)正則表達(dá)式的模式時(shí)使用了特殊的字符和序列。下面描述了可以使用的字符和序列,并給出了實(shí)例。
\ 將下一個(gè)字符標(biāo)記為特殊字符或字面值。例如"n"與字符"n"匹配。"\n"與換行符匹配。序列"\\"與"\"匹配對(duì)面,"\("與"("匹配。
^ 匹配輸入的開(kāi)始位置。
$ 匹配輸入的結(jié)尾。
* 匹配前一個(gè)字符零次或幾次。例如,"zo*"可以匹配"z"、"zoo"。
+ 匹配前一個(gè)字符一次或多次。例如,"zo+"可以匹配"zoo",但不匹配"z"。
? 匹配前一個(gè)字符零次或一次。例如,"a?ve?"可以匹配"never"中的"ve"。
. 匹配換行符以外的任何字符。
(pattern) 與模式匹配并記住匹配。匹配的子字符串可以從作為結(jié)果的 Matches 集合中使用 Item [0]...[n]取得。如果要匹配括號(hào)字符(和 ),可使用"\(" 或 "\)"。
x|y 匹配 x 或 y。例如 "z|food" 可匹配 "z" 或 "food"。"(z|f)ood" 匹配 "zoo" 或 "food"。
{n} n 為非負(fù)的整數(shù)。匹配恰好n次。例如,"o{2}" 不能與 "Bob 中的 "o" 匹配,但是可以與"foooood"中的前兩個(gè)o匹配。
{n,} n 為非負(fù)的整數(shù)。匹配至少n次。例如,"o{2,}"不匹配"Bob"中的"o",但是匹配"foooood"中所有的o。"o{1,}"等價(jià)于"o+"。"o{0,}"等價(jià)于"o*"。
{n,m} m 和 n 為非負(fù)的整數(shù)。匹配至少 n 次,至多 m 次。例如,"o{1,3}" 匹配 "fooooood"中前三個(gè)o。"o{0,1}"等價(jià)于"o?"。
[xyz] 一個(gè)字符集。與括號(hào)中字符的其中之一匹配。例如,"[abc]" 匹配"plain"中的"a"。
[^xyz] 一個(gè)否定的字符集。匹配不在此括號(hào)中的任何字符。例如,"[^abc]" 可以匹配"plain"中的"p".
[a-z] 表示某個(gè)范圍內(nèi)的字符。與指定區(qū)間內(nèi)的任何字符匹配。例如,"[a-z]"匹配"a"與"z"之間的任何一個(gè)小寫(xiě)字母字符。
[^m-z] 否定的字符區(qū)間。與不在指定區(qū)間內(nèi)的字符匹配。例如,"[m-z]"與不在"m"到"z"之間的任何字符匹配。
\b 與單詞的邊界匹配,即單詞與空格之間的位置。例如,"er\b" 與"never"中的"er"匹配,但是不匹配"verb"中的"er"。
\B 與非單詞邊界匹配。"ea*r\B"與"never early"中的"ear"匹配。
\d 與一個(gè)數(shù)字字符匹配。等價(jià)于[0-9]。
\D 與非數(shù)字的字符匹配。等價(jià)于[^0-9]。
\f 與分頁(yè)符匹配。
\n 與換行符字符匹配。
\r 與回車(chē)字符匹配。
\s 與任何白字符匹配,包括空格、制表符、分頁(yè)符等。等價(jià)于"[ \f\n\r\t\v]"。
\S 與任何非空白的字符匹配。等價(jià)于"[^ \f\n\r\t\v]"。
\t 與制表符匹配。
\v 與垂直制表符匹配。
\w 與任何單詞字符匹配,包括下劃線。等價(jià)于"[A-Za-z0-9_]"。
\W 與任何非單詞字符匹配。等價(jià)于"[^A-Za-z0-9_]"。
\num 匹配 num個(gè),其中 num 為一個(gè)正整數(shù)。引用回到記住的匹配。例如,"(.)\1"匹配兩個(gè)連續(xù)的相同的字符。
\n 匹配 n,其中n 是一個(gè)八進(jìn)制換碼值。八進(jìn)制換碼值必須是 1, 2 或 3 個(gè)數(shù)字長(zhǎng)。例如,"\11" 和 "\011" 都與一個(gè)制表符匹配。"\0011"等價(jià)于"\001" 與 "1"。八進(jìn)制換碼值不得超過(guò) 256。否則,只有前兩個(gè)字符被視為表達(dá)式的一部分。允許在正則表達(dá)式中使用ASCII碼。
\xn 匹配n,其中n是一個(gè)十六進(jìn)制的換碼值。十六進(jìn)制換碼值必須恰好為兩個(gè)數(shù)字長(zhǎng)。例如,"\x41"匹配"A"。"\x041"等價(jià)于"\x04" 和 "1"。允許在正則表達(dá)式中使用 ASCII 碼。
Pattern 屬性的用法:
Function RegExpTest(patrn, strng) Dim regEx ' 建立變量。 Set regEx = New RegExp ' 建立正則表達(dá)式。 regEx.Pattern = patrn ' 設(shè)置模式。 regEx.IgnoreCase = True ' 設(shè)置是否區(qū)分大小寫(xiě)。 RegExpTest = regEx.Execute(strng) ' 執(zhí)行搜索。 End Function MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
RegExp對(duì)象的方法
◎ Execute方法
Execute方法對(duì)指定的字符串執(zhí)行正則表達(dá)式搜索。
語(yǔ)法
object.Execute(string)
語(yǔ)法部分描述
object 必需的??偸且粋€(gè) RegExp 對(duì)象的名稱(chēng)。
string 必需的。要在其上執(zhí)行正則表達(dá)式的文本字符串。
說(shuō)明
正則表達(dá)式搜索的設(shè)計(jì)模式是通過(guò) RegExp 對(duì)象的 Pattern 來(lái)設(shè)置的。
Execute 方法返回一個(gè) Matches 集合,其中包含了在 string 中找到的每一個(gè)匹配的 Match 對(duì)象。如果未找到匹配,Execute 將返回空的 Matches 集合。Execute 方法的用法:
Function RegExpTest(patrn, strng) Dim regEx ' 建立變量。 Set regEx = New RegExp ' 建立正則表達(dá)式。 regEx.Pattern = patrn ' 設(shè)置模式。 regEx.IgnoreCase = False ' 設(shè)置區(qū)分大小寫(xiě)。 regEx.Global = True ' 搜索全部匹配。 RegExpTest = regEx.Execute(strng) ' 執(zhí)行搜索。 End Function MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
◎ Replace方法
Replace方法替換在正則表達(dá)式查找中找到的文本。
語(yǔ)法
object.Replace(string1, string2)
語(yǔ)法部分描述
object 必需的。總是一個(gè) RegExp 對(duì)象的名稱(chēng)。
string1 必需的。string1 是將要進(jìn)行文本替換的字符串。
string2 必需的。 string2 是替換文本字符串。
說(shuō)明
被替換的文本的實(shí)際模式是通過(guò) RegExp 對(duì)象的 Pattern 屬性設(shè)置的。
Replace 方法返回 string1 的副本,其中的 RegExp.Pattern 文本已經(jīng)被替換為 string2。如果沒(méi)有找到匹配的文本,將返回原來(lái)的 string1 的副本。
replace 方法的用法:
Function ReplaceTest(patrn, replStr) Dim regEx, str1 ' 建立變量。 str1 = "The quick brown fox jumped over the lazy dog." Set regEx = New RegExp ' 建立正則表達(dá)式。 regEx.Pattern = patrn ' 設(shè)置模式。 regEx.IgnoreCase = True ' 設(shè)置是否區(qū)分大小寫(xiě)。 ReplaceTest = regEx.Replace(str1, replStr) ' 作替換。 End Function MsgBox(ReplaceTest("fox", "cat")) ' 將 'fox' 替換為 'cat'。 ;另外,Replace 方法在模式中替換 subexpressions 。 下面對(duì)以前示例中函數(shù)的調(diào)用,替換了原字符串中的所有字對(duì): MsgBox(ReplaceText("(\S+)(\s+)(\S+)", "$3$2$1")) ' Swap pairs of words.
◎ Test方法
Test方法對(duì)指定的字符串執(zhí)行一個(gè)正則表達(dá)式搜索,并返回一個(gè) Boolean 值指示是否找到匹配的模式。
語(yǔ)法
object.Test(string)
語(yǔ)法部分描述
object 必需的??偸且粋€(gè) RegExp 對(duì)象的名稱(chēng)。
string 必需的。要執(zhí)行正則表達(dá)式搜索的文本字符串。
說(shuō)明
正則表達(dá)式搜索的實(shí)際模式是通過(guò)RegExp對(duì)象的Pattern屬性來(lái)設(shè)置的。RegExp.Global屬性對(duì)Test方法沒(méi)有影響。
如果找到了匹配的模式,Test方法返回True;否則返回False。
Test 方法的用法:
Function RegExpTest(patrn, strng) Dim regEx, retVal ' 建立變量。 Set regEx = New RegExp ' 建立正則表達(dá)式。 regEx.Pattern = patrn ' 設(shè)置模式。 regEx.IgnoreCase = False ' 設(shè)置是否區(qū)分大小寫(xiě)。 retVal = regEx.Test(strng) ' 執(zhí)行搜索測(cè)試。 If retVal Then RegExpTest = "找到一個(gè)或多個(gè)匹配。" Else RegExpTest = "未找到匹配。" End If End Function MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
到此這篇關(guān)于ASP正則匹配替換函數(shù)代碼的文章就介紹到這了,更多相關(guān)ASP正則匹配替換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
正則表達(dá)式匹配括號(hào)外的符號(hào)及數(shù)據(jù)
這篇文章主要介紹了正則表達(dá)式匹配括號(hào)外的符號(hào)及數(shù)據(jù),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06正則入門(mén)連載?。ǐI(xiàn)給不及格的程序員們)
正則入門(mén)連載?。ǐI(xiàn)給不及格的程序員們)...2007-02-02揭開(kāi)正則表達(dá)式的神秘面紗(regexlab出品)
正則表達(dá)式學(xué)習(xí)起來(lái)其實(shí)是很簡(jiǎn)單的,不多的幾個(gè)較為抽象的概念也很容易理解,之所以很多人感覺(jué)正則表達(dá)式比較復(fù)雜,一方面是因?yàn)榇蠖鄶?shù)的文檔沒(méi)有做到由淺入深地講解,概念上沒(méi)有注意先后順序,給讀者的理解帶來(lái)困難2020-02-02ExtJS4的文本框(textField)使用正則表達(dá)式進(jìn)行驗(yàn)證(Regex)的方法
Extjs的Regex的驗(yàn)證屬性分兩種情況,一種是只有紅色提示框;另一種是在提示框邊會(huì)出現(xiàn)一個(gè)類(lèi)似批注的提示信息,不過(guò)在頁(yè)面加載時(shí)要加上Ext.QuickTips.init();提示框才能正常顯示出來(lái)2016-02-02正則表達(dá)式--QQ微信、優(yōu)酷前端 郵箱正則表達(dá)式驗(yàn)證 Bug
但凡稍微有點(diǎn)資歷的程序員,都免不了要寫(xiě)正則表達(dá)驗(yàn)證算法。最近見(jiàn)到好幾個(gè)正則表達(dá)式的Bug,抽空寫(xiě)出來(lái)2011-10-10php中常用的正則表達(dá)式的介紹及應(yīng)用實(shí)例代碼
在編寫(xiě)處理字符串的程序或網(wǎng)頁(yè)時(shí),經(jīng)常會(huì)有查找符合某些復(fù)雜規(guī)則的字符串的需要。正則表達(dá)式就是用于描述這些規(guī)則的語(yǔ)法。2009-12-12重溫JavaScript中的正則表達(dá)式 js學(xué)習(xí)筆記
創(chuàng)建正則表達(dá)式和創(chuàng)建字符串類(lèi)似 , 創(chuàng)建正則表達(dá)式提供了兩種方法 , 一種是采用 new運(yùn)算符,另一個(gè)是采用字面量方式2012-07-07