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

首頁 > 編程 > Regex > 正文

ASP 正則表達式的應用使用說明

2020-03-16 21:14:50
字體:
來源:轉載
供稿:網友
如果原來沒有使用過正則表達式,那么可能對這個術語和概念會不太熟悉。不過,它們并不是您想象的那么新奇。
 
 
一、正則表達式概述 
如果原來沒有使用過正則表達式,那么可能對這個術語和概念會不太熟悉。不過,它們并不是您想象的那么新奇。 
請回想一下在硬盤上是如何查找文件的。您肯定會使用 ? 和 * 字符來幫助查找您正尋找的文件。? 字符匹配文件名中的單個字符,而 * 則匹配一個或多個字符。一個如 'data?.dat' 的模式可以找到下述文件:data1.dat、data2.dat等等。如果使用 * 字符代替 ? 字符,則將擴大找到的文件數量。'data*.dat' 可以匹配下述所有文件名:data.dat、data1.dat、data12.dat等等,盡管這種搜索文件的方法肯定很有用,但也十分有限。? 和 * 通配符的有限能力可以使你對正則表達式能做什么有一個概念,不過正則表達式的功能更強大,也更靈活。 
在我們編寫ASP程序時,經常會判斷一個字符串的有效性,如;一個串是否是數字、是否是有效的Email地址等等。如果不使用正則表達式,那么判斷的程序會很長,并且容易出錯,如果使用正則表達式,這些判斷就是一件很輕松的工作了。后面我們將介紹如何判斷數字和Email地址的有效性。 
在典型的搜索和替換操作中,必須提供要查找的確切文字。這種技術對于靜態文本中的簡單搜索和替換任務可能足夠了,但是由于它缺乏靈活性,因此在搜索動態文本時就有困難了,甚至是不可能的。 
使用正則表達式,能完成些什么事情呢? 
測試字符串的某個模式。例如,可以對一個輸入字符串進行測試,看在該字符串是否存在一個電話號碼模式或一個信用卡號碼模式。這稱為數據有效性驗證。 
替換文本??梢栽谖臋n中使用一個正則表達式來標識特定文字,然后可以全部將其刪除,或者替換為別的文字。 
根據模式匹配從字符串中提取一個子字符串。可以用來在文本或輸入字段中查找特定文字。 
例如,如果需要搜索整個 web 站點來刪除某些過時的材料并替換某些HTML 格式化標記,則可以使用正則表達式對每個文件進行測試,看在該文件中是否存在所要查找的材料或 HTML 格式化標記。用這個方法,就可以將受影響的文件范圍縮小到包含要刪除或更改的材料的那些文件。然后可以使用正則表達式來刪除過時的材料,最后,可以再次使用正則表達式來查找并替換那些需要替換的標記。那么,正則表達式語法的語法是如何呢? 
一個正則表達式就是由普通字符(例如字符 a 到 z)以及特殊字符(稱為元字符)組成的文字模式。該模式描述在查找文 
字主體時待匹配的一個或多個字符串。正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。 
這里有一些可能會遇到的正則表達式示例: 
復制代碼代碼如下:

/^/[ /t]*$/ "^/[ /t]*$" 匹配一個空白行。 
//d{2}-/d{5}/ "/d{2}-/d{5}" 驗證一個ID 號碼是否由一個2位數字,一個連字符以及一個5位數字組成。 
/<(.*)>.*<///1>/ "<(.*)>.*<///1>" 匹配一個 HTML 標記。 


  二、正則表達式在VBScript中的應用 
  VBScript使用RegExp對象、Matches集合以及Match對象提供正則表達式支持功能。我們還是先看一個例子。 
復制代碼代碼如下:

<% 
Function RegExpTest(patrn, strng) 
Dim regEx, Match, Matches  ?。Ы⒆兞俊?nbsp;
Set regEx = New RegExp  ?。Ы⒄齽t表達式。 
regEx.Pattern = patrn ?。гO置模式。 
regEx.IgnoreCase = True  ?。гO置是否區分字符大小寫。 
regEx.Global = True  ?。гO置全局可用性。 
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 & "'." & "<BR>" 
Next 
RegExpTest = RetStr 
End Function 
response.write RegExpTest("[ij]s.", "IS1 Js2 IS3 is4") 
%> 

在這個例子中,我們查找字符串中有無is或者js這兩個詞,忽略大小寫。運行的結果如下: 
復制代碼代碼如下:

Match found at position 0. Match Value is 'IS1'. 
Match found at position 4. Match Value is 'Js2'. 
Match found at position 8. Match Value is 'IS3'. 
Match found at position 12. Match Value is 'is4'. 

下面我們就介紹這三個對象和集合。 
  1、RegExp對象 是最重要的一個對象,它有幾個屬性,其中: 
  ○Global 屬性,設置或返回一個 Boolean 值,該值指明在整個搜索字符串時模式是全部匹配還是只匹配第一個。如果搜索應用于整個字符串,Global 屬性的值為 True,否則其值為 False。默認的設置為 False。 
  ○IgnoreCase 屬性,設置或返回一個Boolean值,指明模式搜索是否區分大小寫。如果搜索是區分大小寫的,則IgnoreCase 屬性為 False;否則為 True。缺省值為 False。 
  ○Pattern 屬性,設置或返回被搜索的正則表達式模式。必選項??偸且粋€ RegExp 對象變量。 
  2、Match 對象 
  匹配搜索的結果是存放在Match對象中,提供了對正則表達式匹配的只讀屬性的訪問。 Match 對象只能通過 RegExp 對象的 Execute 方法來創建,該方法實際上返回了 Match 對象的集合。所有的 Match 對象屬性都是只讀的。在執行正則表達式時,可能產生零個或多個 Match 對象。每個 Match 對象提供了被正則表達式搜索找到的字符串的訪問、字符串的長度,以及找到匹配的索引位置等。 
  ○FirstIndex 屬性,返回在搜索字符串中匹配的位置。FirstIndex 屬性使用從零起算的偏移量,該偏移量是相對于 
搜索字符串的起始位置而言的。換言之,字符串中的第一個字符被標識為字符 0 
  ○Length 屬性,返回在字符串搜索中找到的匹配的長度。 
  ○Value 屬性,返回在一個搜索字符串中找到的匹配的值或文本。 
  3、Matches 集合 
  正則表達式 Match 對象的集合。Matches 集合中包含若干獨立的 Match 對象,只能使用 RegExp 對象的 Execute 方法來創建之。與獨立的 Match 對象屬性相同,Matches `集合的一個屬性是只讀的。在執行正則表達式時,可能產生零個或多個 Match 對象。每個 Match 對象都提供了與正則表達式匹配的字符串的訪問入口、字符串的長度,以及標識匹配位置的索引。 
  學習了這三個對象和集合,如何應用于字符串的判斷和替換呢?regExp對象的三個方法正好解決了這個問題,它們是Replace方法、Test方法和Execute方法。 
  1、Replace 方法 
  替換在正則表達式查找中找到的文本。我們還是先看個例子:下面的例子說明了 Replace 方法的用法。 
復制代碼代碼如下:

<% 
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 
Response.write ReplaceTest("fox", "cat") & "<BR>" ' 將 'fox' 替換為 'cat'。 
Response.write ReplaceTest("(/S+)(/s+)(/S+)", "$3$2$1") ' 交換詞對. 
%> 

  2、Test 方法 
  對指定的字符串執行一個正則表達式搜索,并返回一個 Boolean 值指示是否找到匹配的模式。正則表達式搜索的實際模式是通過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 
Response.write RegExpTest("is.", "IS1 is2 IS3 is4") 
%> 

  3、Execute 方法 
  對指定的字符串執行正則表達式搜索。正則表達式搜索的設計模式是通過 RegExp 對象的 Pattern 來設置的。 
  Execute 方法返回一個 Matches 集合,其中包含了在 string 中找到的每一個匹配的 Match 對象。如果未找到匹配,Execute 將返回空的 Matches 集合。 

  三、JavaScript中正則表達式的使用 
  在JavaScript 1.2版以后,JavaScript也支持正則表達式。 
  1、replace 
  replace在一個字符串中通過正則表達式查找替換相應的內容。replace并不改變原來的字符串,只是重新生成了一個新的字符串。如果需要執行全局查找或忽略大小寫,那幺在正則表達式的最后添加g和i。 
例: 
復制代碼代碼如下:

<SCRIPT> 
re = /apples/gi; 
str = "Apples are round, and apples are juicy."; 
newstr=str.replace(re, "oranges"); 
document.write(newstr) 
</SCRIPT> 

結果是:"oranges are round, and oranges are juicy." 
例: 
復制代碼代碼如下:

<SCRIPT> 
str = "Twas the night before Xmas..."; 
newstr=str.replace(/xmas/i, "Christmas"); 
document.write(newstr) 
</SCRIPT> 

結果是:"Twas the night before Christmas..." 
例: 
復制代碼代碼如下:

<SCRIPT> 
re = /(/w+)/s(/w+)/;str = "John Smith"; 
newstr = str.replace(re, "$2, $1"); 
document.write(newstr) 
</SCRIPT> 

結果是:"Smith, John". 
  2、search 
search通過正則表達式查找相應的字符串,只是判斷有無匹配的字符串。如果查找成功,search返回匹配串的位置,否則返回-1。 
search(regexp) 
復制代碼代碼如下:

<SCRIPT> 
function testinput(re, str){ 
if (str.search(re) != -1) 
midstring = " contains "; 
else 
midstring = " does not contain "; 
document.write (str + midstring + re.source); 

testinput(/^[1-9]/i,"123") 
</SCRIPT> 

  3、match 
  match方法執行全局查找,查找結果存放在一個數組里。 
例一: 
復制代碼代碼如下:

<SCRIPT> 
str = "For more information, see Chapter 3.4.5.1"; 
re = /(chapter /d+(/./d)*)/i; 
found = str.match(re); 
document.write(found); 
</SCRIPT> 

顯示結果:Chapter 3.4.5.1,Chapter 3.4.5.1,.1 
例二: 
復制代碼代碼如下:

<SCRIPT> 
str = "abcDdcba"; 
newArray = str.match(/d/gi); 
document.write(newArray); 
</SCRIPT> 

顯示結果D, d. 

  四、示例 
1 、判斷數字的正確性 
復制代碼代碼如下:

<%@ Language=VBScript %> 
<script language="javascript" runat="server"> 
function isNumeric(strNumber) { 
return (strNumber.search(/^(-|/+)?/d+(/./d+)?$/) != -1); 

function isUnsignedNumeric(strNumber) { 
return (strNumber.search(/^/d+(/./d+)?$/) != -1); 

function isInteger(strInteger) { 
return (strInteger.search(/^(-|/+)?/d+$/) != -1); 

function isUnsignedInteger(strInteger) { 
return (strInteger.search(/^/d+$/) != -1); 

</script> 
<HTML> 
<BODY> 
<b>判斷數字的正確性</b> 
<% 
Dim strTemp 
strTemp = CStr(Request.Form("inputstring")) 
If strTemp = "" Then strTemp = "0" 
%> 
<TABLE BORDER="1" CELLPADDING="4" CELLSPACING="2"> 
<TR> 
<TD ALIGN="right"><B>原始字符串</B></TD> 
<TD><%= strTemp %></TD> 
</TR> 
<TR> 
<TD ALIGN="right"><B>數字</B></TD> 
<TD><%=isNumeric(strTemp)%></TD> 
</TR> 
<TR> 
<TD ALIGN="right"><B>非負數字</B></TD> 
<TD><%=isUnsignedNumeric(strTemp)%></TD> 
</TR> 
<TR> 
<TD ALIGN="right"><B>整數</B></TD> 
<TD><%=isInteger(strTemp)%></TD> 
</TR> 
<TR> 
<TD ALIGN="right"><B>非負整數()</B></TD> 
<TD><%=isUnsignedInteger(strTemp)%></TD> 
</TR> 
</TABLE> 
<FORM ACTION="<%=Request.ServerVariables("SCRIPT_NAME")%>" METHOD="post"> 
請輸入一個數字:<BR> 
<INPUT TYPE="text" NAME="inputstring" SIZE="50"></INPUT><BR> 
<INPUT TYPE="submit" Value="提交"></INPUT><BR> 
</FORM> 
</BODY> 
</HTML> 

2、判斷Email地址的正確性 
復制代碼代碼如下:

<% 
Function isemail(strng) 
isemail = false 
Dim regEx, Match 
Set regEx = New RegExp 
regEx.Pattern = "^/w+((-/w+)|(/./w+))*/@[A-Za-z0-9]+((/.|-)[A-Za-z0-9]+)*/.[A-Za-z0-9]+$" 
regEx.IgnoreCase = True 
Set Match = regEx.Execute(strng) 
if match.count then isemail= true 
End Function 
%> 

  五、總結 
  上面我們介紹了正則表達式的基本概念,以及在VBScript和JavaScript中如何使用正則表達式,同時,通過一些實例讓大家有了感性的認識。正則表達式的應用范圍很廣,能為大家解決很多實際中的問題。本文介紹的內容只是一些初步的知識,還有很多語法規則需要大家繼續學習,在實踐中發現問題,解決問題。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美天堂在线观看| 日韩经典一区二区三区| 97精品一区二区三区| 亚洲男人天堂九九视频| 国产精品7m视频| 欧美日韩999| 国产在线拍偷自揄拍精品| 国自产精品手机在线观看视频| 91视频国产高清| 另类天堂视频在线观看| 最近免费中文字幕视频2019| 一区二区欧美在线| 国产suv精品一区二区三区88区| 欧美丝袜一区二区| 国产欧美日韩丝袜精品一区| 国产精品夜色7777狼人| 国产在线98福利播放视频| 亚洲成色777777在线观看影院| 中文字幕日本精品| 人人澡人人澡人人看欧美| 欧美日韩国内自拍| 亚洲xxxx3d| 日韩亚洲综合在线| 日韩精品一区二区三区第95| 久久亚洲精品国产亚洲老地址| 亚洲欧美制服另类日韩| 91精品国产自产在线老师啪| 亚洲免费精彩视频| 韩国三级电影久久久久久| 欧美中文字幕在线观看| 日韩av在线一区| 久久久精品久久| 欧美理论电影在线播放| 中文字幕在线亚洲| 国模精品一区二区三区色天香| 色天天综合狠狠色| 久久精品电影一区二区| 成人激情av在线| 久久亚洲电影天堂| 亚洲第一男人av| 精品国产一区二区三区久久狼5月| 亚洲free性xxxx护士hd| 久久不射热爱视频精品| 狠狠色狠狠色综合日日五| 久久精品在线播放| 欧美xxxx做受欧美.88| 青青草原成人在线视频| 精品无码久久久久久国产| 91精品久久久久久久久中文字幕| 亚洲精品久久久久久久久久久久| 欧美精品精品精品精品免费| 亚洲人成电影网站色www| 亚洲缚视频在线观看| 欧美日韩在线视频一区| 国产精品福利久久久| 久久久久亚洲精品成人网小说| 欧美亚洲在线视频| 国产精品永久在线| 久久久久久久一区二区三区| 97国产suv精品一区二区62| 久久99久国产精品黄毛片入口| 日韩亚洲欧美中文在线| 国产精品日韩一区| 综合av色偷偷网| 亚洲嫩模很污视频| 日本亚洲欧洲色α| 欧美日韩中文字幕日韩欧美| 欧美激情视频一区二区三区不卡| 最近的2019中文字幕免费一页| 欧美日韩性生活视频| 亚洲美女av网站| 亚洲第五色综合网| 亚洲日韩第一页| 久久亚洲精品网站| 97视频在线观看成人| 91视频九色网站| 九九九久久国产免费| 国产精品久久久久久久久借妻| 伊人久久大香线蕉av一区二区| 国产视频精品va久久久久久| 国产精品吊钟奶在线| 精品久久久久久久久久久久久久| xxxxxxxxx欧美| 蜜臀久久99精品久久久久久宅男| 亚洲最大成人网色| 国产成人精品久久亚洲高清不卡| 欧美乱人伦中文字幕在线| 国产欧美精品一区二区| 国产精品免费看久久久香蕉| 亚洲护士老师的毛茸茸最新章节| 5566日本婷婷色中文字幕97| 在线成人免费网站| 97精品国产97久久久久久免费| 高清欧美一区二区三区| 一本色道久久88综合亚洲精品ⅰ| 久久免费视频这里只有精品| 亚洲国产精品久久久| 国产精品一区二区三| 久久人人爽人人爽人人片av高清| 97人人做人人爱| 久久国产精品99国产精| 91伊人影院在线播放| 中国日韩欧美久久久久久久久| 欧美性20hd另类| 国产有码在线一区二区视频| 亚洲小视频在线观看| 欧美精品少妇videofree| 亚洲综合在线播放| 午夜精品美女自拍福到在线| 国产精品专区一| 亚洲伊人成综合成人网| 奇米4444一区二区三区| 在线性视频日韩欧美| 97超碰蝌蚪网人人做人人爽| 91精品国产综合久久男男| 欧美成人激情图片网| 成人高h视频在线| 国产精品麻豆va在线播放| 日本精品视频在线观看| 日韩男女性生活视频| 欧美成人激情图片网| 亚洲欧美日韩一区二区在线| 中文字幕在线精品| 国产精品一区二区三区免费视频| 日韩美女写真福利在线观看| 欧美精品久久久久久久免费观看| 在线观看亚洲视频| 动漫精品一区二区| 欧美性高潮床叫视频| 亚洲精品久久久久久久久久久久久| 亚洲成色www8888| 国产精品久久久久久亚洲影视| 久久久久久久久久久亚洲| 亚洲精品免费网站| 日韩免费中文字幕| 热久久免费视频精品| 日韩精品亚洲精品| 欧美精品激情视频| 国产噜噜噜噜久久久久久久久| 中文字幕在线看视频国产欧美在线看完整| 粗暴蹂躏中文一区二区三区| 欧美日韩国产激情| 国产精品一区二区久久国产| 亚洲va国产va天堂va久久| 91美女片黄在线观看游戏| 久久久久久69| 亚洲欧美另类人妖| 欧美理论电影在线观看| 性欧美xxxx交| 欧美日韩国产精品一区二区三区四区| 日韩午夜在线视频| 91国产中文字幕| 国产精品亚发布| 91精品国产综合久久男男| 欧洲日本亚洲国产区| 亚洲电影免费观看高清完整版在线观看| 亚洲自拍中文字幕| 亚洲欧美激情四射在线日| 国产一区二区精品丝袜| 国产一区二区日韩| 青草热久免费精品视频| 日韩高清电影免费观看完整| 色爱精品视频一区| 97在线免费观看|