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

首頁 > 編程 > Regex > 正文

正則表達式的應用

2020-03-16 21:22:45
字體:
來源:轉載
供稿:網友

一、正則表達式概述

二、正則表達式在VBScript中的應用

三、正則表達式在VavaScript中的應用

四、示例

五、總結

一、正則表達式概述

如果原來沒有使用過正則表達式,那么可能對這個術語和概念會不太熟悉。不過,它們并不是您想象的那么新奇。

請回想一下在硬盤上是如何查找文件的。您肯定會使用?和*字符來幫助查找您正尋找的文件。?字符匹配文件名中的單個字符,而*則匹配一個或多個字符。一個如'data?.dat'的模式可以找到下述文件:data1.dat、data2.dat等等。如果使用*字符代替?字符,則將擴大找到的文件數量。'data*.dat'可以匹配下述所有文件名:data.dat、data1.dat、data12.dat等等,盡管這種搜索文件的方法肯定很有用,但也十分有限。?和*通配符的有限能力可以使你對正則表達式能做什么有一個概念,不過正則表達式的功能更強大,也更靈活。

在我們編寫ASP程序時,經常會判斷一個字符串的有效性,如;一個串是否是數字、是否是有效的Email地址等等。如果不使用正則表達式,那么判斷的程序會很長,并且容易出錯,如果使用正則表達式,這些判斷就是一件很輕松的工作了。后面我們將介紹如何判斷數字和Email地址的有效性。

在典型的搜索和替換操作中,必須提供要查找的確切文字。這種技術對于靜態文本中的簡單搜索和替換任務可能足夠了,但是由于它缺乏靈活性,因此在搜索動態文本時就有困難了,甚至是不可能的。

使用正則表達式,能完成些什么事情呢?

測試字符串的某個模式。例如,可以對一個輸入字符串進行測試,看在該字符串是否存在一個電話號碼模式或一個信用卡號碼模式。這稱為數據有效性驗證。

替換文本。可以在文檔中使用一個正則表達式來標識特定文字,然后可以全部將其刪除,或者替換為別的文字。

根據模式匹配從字符串中提取一個子字符串??梢杂脕碓谖谋净蜉斎胱侄沃胁檎姨囟ㄎ淖?。

例如,如果需要搜索整個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對象提供正則表達式支持功能。我們還是先看一個例子。

<%

FunctionRegExpTest(patrn,strng)

DimregEx,Match,Matches  '建立變量。

SetregEx=NewRegExp  '建立正則表達式。

regEx.Pattern=patrn  '設置模式。

regEx.IgnoreCase=True  '設置是否區分字符大小寫。

regEx.Global=True  '設置全局可用性。

SetMatches=regEx.Execute(strng)  '執行搜索。

ForEachMatchinMatches  '遍歷匹配集合。

RetStr=RetStr&"Matchfoundatposition"

?,etStr=RetStr&Match.FirstIndex&".Matchvalueis'"

?,etStr=RetStr&Match.value&"'."&"
"

Next

RegExpTest=RetStr

EndFunction

response.writeRegExpTest("[ij]s.","IS1Js2IS3is4")

%>

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

Matchfoundatposition0.Matchvalueis'IS1'.

Matchfoundatposition4.Matchvalueis'Js2'.

Matchfoundatposition8.Matchvalueis'IS3'.

Matchfoundatposition12.Matchvalueis'is4'.

?,O旅嫖覀兙徒榻B這三個對象和集合。

?,! ?、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方法的用法。

<%

FunctionReplaceTest(patrn,replStr)

DimregEx,str1?,,,,,,,,,,,,,,,,,?#39;建立變量。

str1="Thequickbrownfoxjumpedoverthelazydog."

SetregEx=NewRegExp?,,,,,,,,,,?#39;建立正則表達式。

regEx.Pattern=patrn?,,,,,,,,,,,,,?#39;設置模式。

regEx.IgnoreCase=True?,,,,,,,,,?#39;設置是否區分大小寫。

ReplaceTest=regEx.Replace(str1,replStr)?,?#39;作替換。

EndFunction

Response.writeReplaceTest("fox","cat")&"
"?,,,,,?#39;將'fox'替換為'cat'。

Response.writeReplaceTest("(/S+)(/s+)(/S+)","$3$2$1")?,,,?#39;交換詞對.

%>

2、Test方法

對指定的字符串執行一個正則表達式搜索,并返回一個Boolean值指示是否找到匹配的模式。正則表達式搜索的實際模式是通過RegExp對象的Pattern屬性來設置的。RegExp.Global屬性對Test方法沒有影響。

如果找到了匹配的模式,Test方法返回True;否則返回False。下面的代碼說明了Test方法的用法。

<%

FunctionRegExpTest(patrn,strng)

DimregEx,retVal?,,,,,,,?#39;建立變量。

SetregEx=NewRegExp?,,,?#39;建立正則表達式。

regEx.Pattern=patrn?,,,,,,,?#39;設置模式。

regEx.IgnoreCase=False?,,,?#39;設置是否區分大小寫。

retVal=regEx.Test(strng)?,,?#39;執行搜索測試。

IfretValThen

RegExpTest="找到一個或多個匹配。"

Else

RegExpTest="未找到匹配。"

EndIf

EndFunction

Response.writeRegExpTest("is.","IS1is2IS3is4")

%>

3、Execute方法

對指定的字符串執行正則表達式搜索。正則表達式搜索的設計模式是通過RegExp對象的Pattern來設置的。

Execute方法返回一個Matches集合,其中包含了在string中找到的每一個匹配的Match對象。如果未找到匹配,Execute將返回空的Matches集合。

三、javascript中正則表達式的使用

在javascript1.2版以后,javascript也支持正則表達式。

1、replace

replace在一個字符串中通過正則表達式查找替換相應的內容。replace并不改變原來的字符串,只是重新生成了一個新的字符串。如果需要執行全局查找或忽略大小寫,那么在正則表達式的最后添加g和i。

例:

結果是:"orangesareround,andorangesarejuicy."

例:

結果是:"TwasthenightbeforeChristmas..."

例:

結果是:"Smith,John".

2、search

search通過正則表達式查找相應的字符串,只是判斷有無匹配的字符串。如果查找成功,search返回匹配串的位置,否則返回-1。

search(regexp)

3、match

match方法執行全局查找,查找結果存放在一個數組里。

例一:

顯示結果:Chapter3.4.5.1,Chapter3.4.5.1,.1

例二:

顯示結果D,d.

四、示例

1、判斷數字的正確性

<%@Language=VBScript%>

?,,unctionisNumeric(strNumber){

?,,,,,eturn(strNumber.search(/^(-|/+)?/d+(/./d+)?$/)!=-1);

?,,

?,,unctionisUnsignedNumeric(strNumber){

?,,,,,,eturn(strNumber.search(/^/d+(/./d+)?$/)!=-1);

?,,

?,,unctionisInteger(strInteger){

?,,,,,eturn(strInteger.search(/^(-|/+)?/d+$/)!=-1);

?,

?,unctionisUnsignedInteger(strInteger){

?,,,,,,eturn(strInteger.search(/^/d+$/)!=-1);

?,,

 

?,,?/p>

?,,,,,,?b>判斷數字的正確性

<%

DimstrTemp

strTemp=CStr(Request.Form("inputstring"))

IfstrTemp=""ThenstrTemp="0"

%>

 

?,?/p>

?,,,,,,?b>原始字符串

?,,,,,,?lt;%=strTemp%>

?,,?/p>

?,,?/p>

?,,,,,?b>數字

?,,,,,,?lt;%=isNumeric(strTemp)%>

?,,?/p>

?,,?/p>

?,,,,,,?b>非負數字

?,,,,,?lt;%=isUnsignedNumeric(strTemp)%>

?,?/p>

?,,?/p>

?,,,,,,?b>整數

?,,,,,,?lt;%=isInteger(strTemp)%>

?,,?/p>

?,,?/p>

?,,,,,,?b>非負整數()

?,,,,,,?lt;%=isUnsignedInteger(strTemp)%>

?,,?/p>

 

"METHOD="post">

?,U堓斎胍粋€數字:

?,?/p>

?,?/p>

 

 

 

2、判斷Email地址的正確性

<%

Functionisemail(strng)

?,,semail=false

?,,imregEx,Match

?,,etregEx=NewRegExp

?,,egEx.Pattern="^/w+((-/w+)|(/./w+))*/@[A-Za-z0-9]+((/.|-)[A-Za-z0-9]+)*/.[A-Za-z0-9]+$"

?,,egEx.IgnoreCase=True

?,,etMatch=regEx.Execute(strng)

ifmatch.countthenisemail=true

EndFunction

%>

五、總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频免费在线| 丰满岳妇乱一区二区三区| 亚洲激情第一页| 91美女福利视频高清| 欧美视频在线观看免费| 国产午夜精品理论片a级探花| 国产精品久久久久久久久免费看| 色综合色综合网色综合| 亚洲精品国产suv| 高清欧美一区二区三区| 黑人极品videos精品欧美裸| 国产日韩av高清| 国产精品aaaa| 亚洲天堂免费在线| 久久久97精品| 国产亚洲aⅴaaaaaa毛片| 国产欧美一区二区三区在线看| 一本色道久久88亚洲综合88| 国产香蕉97碰碰久久人人| 日韩69视频在线观看| 欧美综合国产精品久久丁香| 狠狠躁18三区二区一区| 欧美视频在线看| 91久久久久久久一区二区| 久久激情视频久久| 日韩亚洲精品电影| 久久久久久久国产精品视频| 精品一区二区三区电影| 色av吧综合网| 欧美在线观看一区二区三区| 欧美日产国产成人免费图片| 96精品久久久久中文字幕| 国产一区二区日韩精品欧美精品| 91色精品视频在线| 亚洲精品国产suv| 国产精品成人一区二区三区吃奶| 欧美丝袜第一区| 亚洲天堂影视av| 国产精品一区=区| 久久综合色88| 久久欧美在线电影| 亚洲精品成人久久电影| 成人激情黄色网| 亚洲精品www久久久| 裸体女人亚洲精品一区| 成人h视频在线| 国产日韩在线免费| 欧美黑人性视频| 青青青国产精品一区二区| 久久精品亚洲94久久精品| 精品久久香蕉国产线看观看亚洲| 性欧美视频videos6一9| 成人在线视频福利| 亚洲第一综合天堂另类专| 久久免费视频观看| 欧美大片免费看| 国产精品成人va在线观看| 成人444kkkk在线观看| 欧洲成人免费aa| 色偷偷av一区二区三区| 法国裸体一区二区| 亚洲欧洲一区二区三区久久| 亚洲男人天堂2024| 国产成人精品久久久| 国产日韩欧美成人| 亚洲第一区在线| 欧美插天视频在线播放| 中文字幕一精品亚洲无线一区| 欧洲成人免费aa| 在线观看视频亚洲| 久久久成人精品视频| 日本精品一区二区三区在线| www.欧美精品| 欧美性猛交xxxx久久久| 亚洲一品av免费观看| 亚洲一区中文字幕在线观看| 欧美性猛交xxxx富婆弯腰| 成人欧美一区二区三区黑人孕妇| 欧美国产日韩一区二区三区| 国产精品 欧美在线| 亚洲香蕉在线观看| 欧美午夜激情小视频| 日韩中文第一页| 中文字幕亚洲欧美日韩在线不卡| 日韩最新av在线| 国产91色在线| 国产91九色视频| 国产欧美日韩高清| xxav国产精品美女主播| 国产精品久久久亚洲| 影音先锋日韩有码| 精品国产自在精品国产浪潮| 亚洲国产日韩欧美在线99| 成人日韩在线电影| 亚洲无亚洲人成网站77777| 91精品在线一区| 在线视频亚洲欧美| 亚洲视频在线播放| 国产精品91一区| 成人免费视频网| 精品国产乱码久久久久久虫虫漫画| 国产美女精品免费电影| 国产91免费看片| 中日韩美女免费视频网站在线观看| 91九色国产社区在线观看| 久久精品国产一区二区电影| 一个人看的www欧美| 成人综合国产精品| 欧美噜噜久久久xxx| 成人黄色中文字幕| 日本中文字幕久久看| 亚洲黄色在线看| 亚洲人成电影在线观看天堂色| 亚洲福利视频二区| 久久久久成人精品| 国产成人精品综合| 日韩av影院在线观看| 欧美另类精品xxxx孕妇| 亚洲美女视频网| 日韩免费在线播放| 国产精品久久国产精品99gif| 亚洲色图校园春色| 日本精品视频在线| 亚洲精品综合精品自拍| 18一19gay欧美视频网站| 欧美成年人网站| 日韩欧美成人网| 日韩av成人在线观看| 亚洲www在线| 欧美午夜激情在线| 成人av色在线观看| 久久影院在线观看| 日韩日本欧美亚洲| 欧美一区三区三区高中清蜜桃| 日韩在线欧美在线国产在线| 一级做a爰片久久毛片美女图片| 国产视频999| 久久精品国产成人| 亚洲精品中文字幕有码专区| 亚洲精品中文字| 狠狠躁夜夜躁人人爽超碰91| 国产黑人绿帽在线第一区| 91精品国产自产在线老师啪| 国产91精品久| 国产精品69精品一区二区三区| 日韩成人性视频| 欧美性极品少妇精品网站| 久久久久久久久久国产精品| 亚洲精品视频在线观看视频| 亚洲男人天堂2024| 国产精品久久久久久久久久久久久久| 深夜福利国产精品| 欧美成人亚洲成人日韩成人| 日韩高清av在线| 亚洲xxx大片| 日韩电影中文字幕在线| www日韩中文字幕在线看| 欧美激情乱人伦一区| 国产精品视频公开费视频| 国产精品久久在线观看| 亚洲国产另类 国产精品国产免费| 欧美视频专区一二在线观看| 亚洲精品日韩丝袜精品| 91久久久久久久久久久|