ASP中的正規表示式

2021-08-28 15:49:49 字數 3507 閱讀 6251

在asp中,使用正規表示式前需宣告物件「set re=new regexp」。

regexp有三個重要屬性:

1. global:設定或返回乙個布林值,指明搜尋匹配字串時是針對全部文字還是只匹配第一處,預設為false

2. ignorecase:設定或返回乙個布林值,指明搜尋字串時是否區分大小寫,預設為false

3. pattern:此項以正規表示式(即形同"[^]]*"之類的式子)表示,指明匹配模式,此為必設項

regexp物件的方法:

1. regexp.replace(string, text):在文字string中,將以pattern模式找到的匹配字串替換為變數text,並返回替換後文字

2. regexp.test(string):在文字string中搜尋匹配字串,如有匹配則返回true,否則返回false

3. regexp.execute(string):在文字string中搜尋匹配字串,並將各匹配字串分別放在各match物件中,後返回所有match物件之集合matches

match物件的屬性:

1. firstindex:返回該物件對應匹配字串的首字母在原始文字中的索引,以「0」為起始位置

2. length:返回匹配字串長度

3. value:返回匹配字串

下面回顧一下上次的函式:

set re=new regexp    』建立正規表示式物件regular expression

re.ignorecase=true    』忽略大小寫

re.global=true

』---------搜尋匹配字串針對全部文字而不是僅一處

』上面一句,最外層乙個圓括號,其中的所有字串可用"$1"表示,"$2"表示第乙個巢狀括號中的字串"http|https|ftp"(這裡只用到"$1")。

』"http|https|ftp"表示三者中的乙個,匹配**的字首"http";

』":\/\/"用到了轉義字元"\",等價於"://";

』"[\w]"匹配單個字母、數字和下劃線,"[\w-]"匹配單個"\w"或"-","[\w-]+"匹配至少乙個"\w"或"-","[\w-]+\."匹配乙個以"."結束的字串如"bing-zhuo.",而"([\w-]+\.)+"則匹配多個以"."結束的字串如這裡的"www.bingzhuo.";

』"[\w]+"匹配這裡的"com";

』"(\/[\w-]+)*"匹配0個或以上類似"/v1"的字串,這是可有可無的;

』"[\/]?"表示**後的"/"可有可無,但不超過乙個;

』"([\w-]+\.[\w]+)?"匹配0或1個這裡的"index.htm";

』再看最後的"?p=1&q=2",這種以"?"開始的字串最多只有乙個,而其中以"&"開始的則可有多個。"\?[\w]+=[\w]+"匹配"?p=1","&[\w]+=[\w]+"匹配"&q=2",後加"*"表示可重複0~n次,而"(\?[\w]+=……+)*)?"後的"?"表示整個以"?"開始的引數可重複0~1次。

str=re.replace(str,"$1")

最後,以pattern指定的模式替換匹配文字,上面的"$1"表示最外層圓括號內的整個**。

function autolink(str)

str=" "&str

set re=new regexp    』建立正規表示式物件regular expression

re.ignorecase=true    』忽略大小寫

re.global=true

』---------搜尋匹配字串針對全部文字而不是僅一處

』查詢帶協議字首(如http)的鏈結

str=re.replace(str,"$1")

』查詢不帶協議字首的鏈結

re.pattern="([^\/])(www\.([\w-]+\.)+[\w]+(\/[\w-]+)*[\/]?([\w-]+\.[\w]+)?(\?[\w]+=[\w]+(&[\w]+=[\w]+)*)?)"

str=re.replace(str,"$1$2")

』查詢郵件鏈結

re.pattern="(mailto:)?([\w]+@([\w-]+\.)+[\w]+)"

str=re.replace(str,"$1$2")

set re=nothing

str=trim(str)

autolink=str

end function

不過這個函式尚有乙個缺欠是我目前無法修補的,便是如果在無協議字首的鏈結前加上「\」成為「\www.bingzhuo.com」便不能自動鏈結了,希望以後能改正這一點。

下面介紹一下正規表示式的特殊字元:

「^」後接字元為字串開頭:如"^b"匹配"bing"而不匹配"abc"

「$」前接字元為字串末尾:如"g$"匹配"bing"而不匹配"fgh"

「*」前接字元重複0~n次:如"go*gle"匹配"ggle"和"goooogle"

「+」前接字元重複1~n次:如"go+gle"匹配"gogle"和"gooogle"而不匹配"ggle"

「?」前接字元重複0或1次:如"go?gle"匹配"ggle"和"gogle"而不匹配"gooogle"

「.」表示除換行符外的所有字元:如".b"匹配"ab","cb",".+"匹配不換行的所有字串

「|」表示「或」:如"ab|cd"同時匹配"ab"和"cd"而不匹配"abcd"    

「( )」表示一或多個字元,從前往後,圓括號中的匹配字串依次以$1,……$9,……返回:如"(bi(ng)z)hu(o)"中,$1代表"bi(ng)z",$2代表"ng",$3代表"o"

「[ ]」中可有多個字元,但只表示其中乙個:如"[xyx]"匹配"x","y","z"但不匹配"xyz",等同於"x|y|z";另,"[abcde]"這種連續字元可簡寫為"[a-e]","[abcde12345]"可簡寫為"[a-e1-5]"

「[^ ]」表示除括號內字元以外的單個字元:如"[^xyz]"匹配"w","a"而不匹配"x","y";"[^abcde]"亦可簡寫為"[^a-e]"

「」n為一數字,表示前接字元重複次數:如"a"表示"aaa"

「」表示前接字元至少重複n次:如"a"匹配"aaa"和"aaaaa"而不匹配"aa"

「」表示前接字元至少重複n次,至多重複m次

「\」為轉義字元,後接上述特殊字元時表示該字元:如"\?"表示"?","\["表示"["

「\w」匹配數字+字母+下劃線集合;「\w」匹配除「\w」外的其他字元

「\d」匹配單個數字,「\d」匹配非數字

asp之正規表示式

將原來的值替換為新值 function replacetest sourcestr,patrn,replstr dim regex,str1,match,matches 建立變數。str1 sourcestr set regex new regexp 建立正規表示式。regex.pattern pa...

Asp正規表示式 RegExp 函式

提供簡單的正規表示式支援功能。說明下面的 說明了regexp物件的用法 function regexptest patrn,strng dim regex,match,matches 建立變數。set regex newregexp 建立正規表示式。regex.pattern patrn 設定模式。...

17種正規表示式 asp

如下 d 非負整數 正整數 0 0 9 1 9 0 9 正整數 d 0 非正整數 負整數 0 0 9 1 9 0 9 負整數 d 整數 d d 非負浮點數 正浮點數 0 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 正浮點數 d d 0 0 非正浮點數 負浮...