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

首頁 > 編程 > Regex > 正文

如何應用正則表達式

2024-09-07 17:40:08
字體:
來源:轉載
供稿:網友

相信大家都在錯新技術頻道上學會了很多編程知識,本文在這里介紹了如何應用正則表達式的內容,小編在這里提醒大家使用正則表達式之前一定要有正則表達式的基礎哦。

一、正則表達式概述
  二、正則表達式在VBScript中的應用
  三、正則表達式在VavaScript中的應用
  四、示例
  五、總結

  一、正則表達式概述?
  如果原來沒有使用過正則表達式,那么可能對這個術語和概念會不太熟悉。不過,它們并不是您想象的那么新奇。
  請回想一下在硬盤上是如何查找文件的。您肯定會使用???和?*?字符來幫助查找您正尋找的文件。??字符匹配文件名中的單個字符,而?*?則匹配一個或多個字符。一個如?'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?  '建立變量。
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?"
?,etStr?=?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'.
下面我們就介紹這三個對象和集合。
?! ?、RegExp對象是最重要的一個對象,它有幾個屬性,其中:
  ○Global?屬性,設置或返回一個?Boolean?值,該值指明在整個搜索字符串時模式是全部匹配還是只匹配第一個。如果搜索應用于整個字符串,Global?屬性的值為?True,否則其值為?False。默認的設置為?False。
  ○IgnoreCase?屬性,設置或返回一個Boolean值,指明模式搜索是否區分大小寫。如果搜索是區分大小寫的,則?IgnoreCase?屬性為?False;否則為?True。缺省值為?False。
  ○Pattern?屬性,設置或返回被搜索的正則表達式模式。必選項??偸且粋€?RegExp?對象變量。
?! ?、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
?,egExpTest?=?"找到一個或多個匹配。"
Else
?,egExpTest?=?"未找到匹配。"
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?
?,earch通過正則表達式查找相應的字符串,只是判斷有無匹配的字符串。如果查找成功,search返回匹配串的位置,否則返回-1。?
         search(regexp)
<SCRIPT>
function?testinput(re,?str){
?if?(str.search(re)?!=?-1)
?,,idstring?=?"?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)?{
?,,,,,,eturn?(strNumber.search(/^(-|/+)?/d+(/./d+)?$/)?!=?-1);
?,?}
?,,?function?isUnsignedNumeric(strNumber)?{
?,,,,,,eturn?(strNumber.search(/^/d+(/./d+)?$/)?!=?-1);
?,?}
?,,?function?isInteger(strInteger)?{
?,,,,,,eturn?(strInteger.search(/^(-|/+)?/d+$/)?!=?-1);
?,,?}
?,,?function?isUnsignedInteger(strInteger)?{
?,,,,,,eturn?(strInteger.search(/^/d+$/)?!=?-1);
?,?}
</script>
<HTML>
?,?<BODY>
?,,,,,?lt;b>判斷數字的正確性</b>
<%
Dim?strTemp
strTemp?=?CStr(Request.Form("inputstring"))
If?strTemp?=?""?Then?strTemp?=?"0"
%>
<TABLE?BORDER="1"?CELLPADDING="4"?CELLSPACING="2">
?,,?<TR>
?,,,,,,?lt;TD?ALIGN="right"><B>原始字符串</B></TD>
?,,,,,,?lt;TD><%=?strTemp?%></TD>
?,?</TR>
?,?<TR>
?,,,,,,?lt;TD?ALIGN="right"><B>數字</B></TD>
?,,,,,?lt;TD><%=isNumeric(strTemp)%></TD>
?,,?</TR>
?,?<TR>
?,,,,,?lt;TD?ALIGN="right"><B>非負數字</B></TD>
?,,,,,,?lt;TD><%=isUnsignedNumeric(strTemp)%></TD>
?,,?</TR>
?,,?<TR>
?,,,,,,?lt;TD?ALIGN="right"><B>整數</B></TD>
?,,,,,?lt;TD><%=isInteger(strTemp)%></TD>
?,,?</TR>
?,,?<TR>
?,,,,,,?lt;TD?ALIGN="right"><B>非負整數()</B></TD>
?,,,,,?lt;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
%>
上面我們介紹了如何應用正則表達式的內容,我們可以通過一些實例讓大家認識正則表達式的應用范圍很廣,能為大家解決很多實際中的問題。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本电影亚洲天堂| 国产精品一区二区av影院萌芽| 国产精品久久久久久影视| 日韩理论片久久| 成人久久一区二区| 国产精品99久久久久久www| 日韩激情第一页| 久久国产精品首页| 国内精品久久久久久久久| 国产免费一区二区三区在线能观看| 日韩精品亚洲精品| 日韩毛片在线观看| 亚洲第一中文字幕在线观看| 精品性高朝久久久久久久| 欧美精品免费在线观看| 国产精品久久久| 韩国日本不卡在线| 欧美成人高清视频| 亚洲欧美国产高清va在线播| 91禁国产网站| 国产欧洲精品视频| 久热精品视频在线观看| www.日本久久久久com.| 97在线视频免费观看| 激情成人中文字幕| 日本不卡免费高清视频| 中文字幕日韩免费视频| 欧美午夜无遮挡| 国产成人精品视频在线观看| 久久久av一区| 午夜精品一区二区三区视频免费看| 日韩欧美视频一区二区三区| 日韩国产在线看| 欧美大秀在线观看| 亚洲日本成人女熟在线观看| 一本久久综合亚洲鲁鲁| 欧美多人乱p欧美4p久久| 国产欧美精品xxxx另类| 国产视频在线观看一区二区| 久久久999国产| 亚洲欧洲日产国产网站| 亚洲午夜未满十八勿入免费观看全集| 91日本视频在线| 国产91热爆ts人妖在线| 97avcom| 国产精品入口日韩视频大尺度| 久久久久在线观看| 九九热最新视频//这里只有精品| 日本在线观看天堂男亚洲| 国产极品jizzhd欧美| 国产精品第二页| 91sao在线观看国产| 在线播放日韩欧美| 亚洲国产成人精品一区二区| 欧美一级大片视频| 精品国内亚洲在观看18黄| 91精品国产91久久久久福利| 国产97在线视频| 日韩中文字幕不卡视频| 欧美精品videos另类日本| 国产最新精品视频| 国产精品一区二区女厕厕| 日韩精品免费综合视频在线播放| 日韩精品福利网站| 亚洲91av视频| 国产视频一区在线| 久久久国产一区二区| 国产成人在线视频| 88国产精品欧美一区二区三区| 久久久亚洲欧洲日产国码aⅴ| 日韩在线观看精品| 久久精品91久久久久久再现| 91高清视频在线免费观看| 91影院在线免费观看视频| 91精品国产网站| 日本亚洲欧洲色α| 日本免费一区二区三区视频观看| 国产精品一区二区久久精品| 亚洲精品自拍第一页| 亚洲国产另类久久精品| 性欧美视频videos6一9| 成人激情视频在线播放| 欧美激情2020午夜免费观看| 国产成人极品视频| 国产精品黄色av| 欧美精品在线免费观看| 日韩中文字幕在线精品| 亚洲第一区中文字幕| 91国产精品电影| 国产美女久久精品香蕉69| 久久av资源网站| 欧美性理论片在线观看片免费| 亚洲精品www| 中文字幕欧美日韩va免费视频| 欧美在线视频观看免费网站| 欧美裸身视频免费观看| 丰满岳妇乱一区二区三区| 97精品国产91久久久久久| 最近2019中文免费高清视频观看www99| 久久久精品影院| xx视频.9999.com| 日韩激情片免费| 国自在线精品视频| 欧美亚洲国产成人精品| 日韩中文字幕视频在线| 91免费看片在线| 中文字幕精品影院| 欧美一区二区三区精品电影| 亚洲性夜色噜噜噜7777| 亚洲一区制服诱惑| 欧美黄色性视频| 亚洲va欧美va国产综合久久| 亚洲日本中文字幕免费在线不卡| 国产欧美精品一区二区| 精品视频www| 国产精品亚洲综合天堂夜夜| 国产精品国产三级国产aⅴ浪潮| 91视频九色网站| 国产视频一区在线| 色妞色视频一区二区三区四区| 成人乱人伦精品视频在线观看| 日韩免费不卡av| 欧美寡妇偷汉性猛交| 国产亚洲精品综合一区91| 久久久亚洲福利精品午夜| 亚洲色图狂野欧美| 精品久久久久久中文字幕一区奶水| 狠狠色狠狠色综合日日五| 精品视频在线观看日韩| 精品视频在线播放| 91精品国产综合久久男男| 午夜精品久久久久久久久久久久| 国产精自产拍久久久久久| 欧美色视频日本高清在线观看| 92裸体在线视频网站| 亚洲国产日韩欧美在线图片| 成人久久久久久| 日韩视频免费中文字幕| 亚洲天堂第一页| 97涩涩爰在线观看亚洲| 精品欧美国产一区二区三区| 欧美最猛黑人xxxx黑人猛叫黄| 中文字幕无线精品亚洲乱码一区| 啪一啪鲁一鲁2019在线视频| 亚洲视频一区二区三区| 欧美黑人狂野猛交老妇| 国产做受69高潮| 国产精品亚洲美女av网站| 在线亚洲欧美视频| 国产精品pans私拍| 亚洲图片在区色| 亚洲国产精品国自产拍av秋霞| 日韩一区二区欧美| 欧美美最猛性xxxxxx| 一区二区三区天堂av| 成人国产精品久久久久久亚洲| 欧美整片在线观看| 美女啪啪无遮挡免费久久网站| 欧美性生活大片免费观看网址| 久久久国产精品亚洲一区| 深夜成人在线观看| 欧美成人激情视频免费观看| 97人人模人人爽人人喊中文字| 久久久亚洲影院你懂的|