ASP正则匹配替换函数代码

 更新时间:2023年06月20日 13:48:51   作者:senyandy  
这篇文章主要介绍了ASP正则匹配替换函数代码,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

本文要介绍的函数名为RegexIsMatch,大家一看名称就知道用正则表达式相关,并且貌似就是来做正则匹配的功能。

这个asp的正则表达式匹配函数有两个参数。subject要处理的目标对象,即源字符串。pattern匹配的正则表达式。也就是说这个RegexReplace函数会在subject中,通过pattern进行正则匹配,如果找到匹配项,则返回True,否则为False。

1、返回true或者false 用来字符串中是否有匹配的内容

<%
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中根据正则找到匹配的并进行替换的函数

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正则表达式用法

RegExp对象提供简单的正则表达式支持功能。

RegExp对象的用法:

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 "
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 对象的属性

◎ Global属性

Global属性设置或返回一个 Boolean 值,该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。
语法
object.Global [= True | False ]
object 参数总是 RegExp 对象。如果搜索应用于整个字符串,Global 属性的值为 True,否则其值为 False。默认的设置为 True。Global 属性的用法(改变赋予 Global 属性的值并观察其效果):

Function RegExpTest(patrn, strng)
Dim regEx ' 建立变量。
Set regEx = New RegExp ' 建立规范表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = True ' 设置是否区分字母的大小写。
regEx.Global = True ' 设置全程性质。
RegExpTest = regEx.Execute(strng) ' 执行搜索。
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

◎ IgnoreCase属性

IgnoreCase属性设置或返回一个Boolean值,指明模式搜索是否区分大小写。
语法
object.IgnoreCase [= True | False ]
object 参数总是一个 RegExp 对象。如果搜索是区分大小写的,则 IgnoreCase 属性为 False;否则为 True。缺省值为 True。

IgnoreCase 属性的用法(改变赋予 IgnoreCase 属性的值以观察其效果):

Function RegExpTest(patrn, strng)
Dim regEx ' 建立变量。
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = True ' 设置是否区分大小写。
RegExpTest = regEx.Execute(strng) ' 执行搜索。
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

◎ Pattern属性

Pattern属性设置或返回被搜索的正则表达式模式。
语法
object.Pattern [= "searchstring"]
Pattern 属性的语法包含以下几个部分:

语法说明:
object 必需的。总是一个 RegExp 对象变量。
searchstring 可选的。被搜索的正则字符串表达式。它可能包含设置部分表格中的各种正则表达式字符。

设置
  在书写正则表达式的模式时使用了特殊的字符和序列。下面描述了可以使用的字符和序列,并给出了实例。
 \ 将下一个字符标记为特殊字符或字面值。例如"n"与字符"n"匹配。"\n"与换行符匹配。序列"\\"与"\"匹配对面,"\("与"("匹配。
 ^ 匹配输入的开始位置。
 $ 匹配输入的结尾。
 * 匹配前一个字符零次或几次。例如,"zo*"可以匹配"z"、"zoo"。
 + 匹配前一个字符一次或多次。例如,"zo+"可以匹配"zoo",但不匹配"z"。
 ? 匹配前一个字符零次或一次。例如,"a?ve?"可以匹配"never"中的"ve"。
 . 匹配换行符以外的任何字符。
 (pattern) 与模式匹配并记住匹配。匹配的子字符串可以从作为结果的 Matches 集合中使用 Item [0]...[n]取得。如果要匹配括号字符(和 ),可使用"\(" 或 "\)"。
 x|y 匹配 x 或 y。例如 "z|food" 可匹配 "z" 或 "food"。"(z|f)ood" 匹配 "zoo" 或 "food"。
 {n} n 为非负的整数。匹配恰好n次。例如,"o{2}" 不能与 "Bob 中的 "o" 匹配,但是可以与"foooood"中的前两个o匹配。
 {n,} n 为非负的整数。匹配至少n次。例如,"o{2,}"不匹配"Bob"中的"o",但是匹配"foooood"中所有的o。"o{1,}"等价于"o+"。"o{0,}"等价于"o*"。
 {n,m} m 和 n 为非负的整数。匹配至少 n 次,至多 m 次。例如,"o{1,3}" 匹配 "fooooood"中前三个o。"o{0,1}"等价于"o?"。
 [xyz] 一个字符集。与括号中字符的其中之一匹配。例如,"[abc]" 匹配"plain"中的"a"。
 [^xyz] 一个否定的字符集。匹配不在此括号中的任何字符。例如,"[^abc]" 可以匹配"plain"中的"p".
 [a-z] 表示某个范围内的字符。与指定区间内的任何字符匹配。例如,"[a-z]"匹配"a"与"z"之间的任何一个小写字母字符。
 [^m-z] 否定的字符区间。与不在指定区间内的字符匹配。例如,"[m-z]"与不在"m"到"z"之间的任何字符匹配。
 \b 与单词的边界匹配,即单词与空格之间的位置。例如,"er\b" 与"never"中的"er"匹配,但是不匹配"verb"中的"er"。
 \B 与非单词边界匹配。"ea*r\B"与"never early"中的"ear"匹配。
 \d 与一个数字字符匹配。等价于[0-9]。
 \D 与非数字的字符匹配。等价于[^0-9]。
 \f 与分页符匹配。
 \n 与换行符字符匹配。
 \r 与回车字符匹配。
 \s 与任何白字符匹配,包括空格、制表符、分页符等。等价于"[ \f\n\r\t\v]"。
 \S 与任何非空白的字符匹配。等价于"[^ \f\n\r\t\v]"。
 \t 与制表符匹配。
 \v 与垂直制表符匹配。
 \w 与任何单词字符匹配,包括下划线。等价于"[A-Za-z0-9_]"。
 \W 与任何非单词字符匹配。等价于"[^A-Za-z0-9_]"。
 \num 匹配 num个,其中 num 为一个正整数。引用回到记住的匹配。例如,"(.)\1"匹配两个连续的相同的字符。
 \n 匹配 n,其中n 是一个八进制换码值。八进制换码值必须是 1, 2 或 3 个数字长。例如,"\11" 和 "\011" 都与一个制表符匹配。"\0011"等价于"\001" 与 "1"。八进制换码值不得超过 256。否则,只有前两个字符被视为表达式的一部分。允许在正则表达式中使用ASCII码。
 \xn 匹配n,其中n是一个十六进制的换码值。十六进制换码值必须恰好为两个数字长。例如,"\x41"匹配"A"。"\x041"等价于"\x04" 和 "1"。允许在正则表达式中使用 ASCII 码。

Pattern 属性的用法:

Function RegExpTest(patrn, strng)
Dim regEx ' 建立变量。
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = True ' 设置是否区分大小写。
RegExpTest = regEx.Execute(strng) ' 执行搜索。
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

RegExp对象的方法

◎ Execute方法

Execute方法对指定的字符串执行正则表达式搜索。
语法
object.Execute(string)
  语法部分描述
object 必需的。总是一个 RegExp 对象的名称。
string 必需的。要在其上执行正则表达式的文本字符串。

说明
正则表达式搜索的设计模式是通过 RegExp 对象的 Pattern 来设置的。
Execute 方法返回一个 Matches 集合,其中包含了在 string 中找到的每一个匹配的 Match 对象。如果未找到匹配,Execute 将返回空的 Matches 集合。Execute 方法的用法:

Function RegExpTest(patrn, strng)
Dim regEx ' 建立变量。
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = False ' 设置区分大小写。
regEx.Global = True ' 搜索全部匹配。
RegExpTest = regEx.Execute(strng) ' 执行搜索。
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

◎ Replace方法

Replace方法替换在正则表达式查找中找到的文本。
语法
object.Replace(string1, string2)
  语法部分描述
object 必需的。总是一个 RegExp 对象的名称。
string1 必需的。string1 是将要进行文本替换的字符串。
string2 必需的。 string2 是替换文本字符串。

说明
 被替换的文本的实际模式是通过 RegExp 对象的 Pattern 属性设置的。
Replace 方法返回 string1 的副本,其中的 RegExp.Pattern 文本已经被替换为 string2。如果没有找到匹配的文本,将返回原来的 string1 的副本。

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
MsgBox(ReplaceTest("fox", "cat"))
' 将 'fox' 替换为 'cat'。
;另外,Replace 方法在模式中替换 subexpressions 。 下面对以前示例中函数的调用,替换了原字符串中的所有字对:
MsgBox(ReplaceText("(\S+)(\s+)(\S+)", "$3$2$1")) ' Swap pairs of words.

◎ Test方法

Test方法对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。
语法
object.Test(string)
  语法部分描述
object 必需的。总是一个 RegExp 对象的名称。
string 必需的。要执行正则表达式搜索的文本字符串。

说明
  正则表达式搜索的实际模式是通过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
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

到此这篇关于ASP正则匹配替换函数代码的文章就介绍到这了,更多相关ASP正则匹配替换内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • 详解正则表达式 \v 元字符

    详解正则表达式 \v 元字符

    正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”)。模式描述在搜索文本时要匹配的一个或多个字符串。\v元字符可以匹配垂直制表符。下面给大家介绍正则表达式 \v 元字符,感兴趣的朋友一起看看吧
    2018-01-01
  • 正则表达式学习笔记

    正则表达式学习笔记

    正则表达式学习笔记...
    2006-10-10
  • UNIX/LINUX SHELL 正则表达式语法详解附使用方法

    UNIX/LINUX SHELL 正则表达式语法详解附使用方法

    一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配
    2019-11-11
  • 如何使用JavaScript和正则表达式进行数据验证

    如何使用JavaScript和正则表达式进行数据验证

    利用客户端JavaScript的优势,JavaScript中的正则表达式可以简化数据验证的工作,下面与大家分享下如何使用JavaScript和正则表达式进行数据验证,感兴趣的朋友可以参考下哈
    2013-05-05
  • asp 图片正则 替换,替换前检查图片是不是本地地址的方法

    asp 图片正则 替换,替换前检查图片是不是本地地址的方法

    这个图片正则先检查图片的地址,不是本地的则用本地的asp突破盗链,方便使用,注意是答chinaz的朋友问的一个问题
    2008-08-08
  • 正则表达式问号的四种用法详解

    正则表达式问号的四种用法详解

    这篇文章主要介绍了正则表达式问号的四种用法详解的相关资料,需要的朋友可以参考下
    2015-09-09
  • JScript中正则表达函数的说明与应用

    JScript中正则表达函数的说明与应用

    JScript中正则表达函数的说明与应用...
    2006-06-06
  • 比较常用证件正则表达式验证大全

    比较常用证件正则表达式验证大全

    最近做项目,有项目需求需要对各种常用的证件进行验证。而港澳通行证,台湾通行证,护照这些证件,在网上没有搜到正则验证的方法,后来经过一番折腾,结合validator这个验证插件写了一些代码,在此分享给大家,需要的朋友可以参考下
    2015-10-10
  • php正则表达式中贪婪与非贪婪介绍

    php正则表达式中贪婪与非贪婪介绍

    什么叫贪婪,比如说要从字符串中td面包一td td面包二td吃面包,本来你只可以吃面包一,可是你贪心,于是就把第一个td到最后一个td里面的两个面包取出来了,你想多吃点,非贪婪也就是你不贪吃了,就只吃面包一
    2016-03-03
  • 浅析lastIndex对正则表达式结果的影响

    浅析lastIndex对正则表达式结果的影响

    js中正则表达式的使用方式有两种,一种是正则表达式对象的方法,一种是字符串对象的方法。下面通过本文给大家分享lastIndex对正则表达式结果的影响,需要的朋友参考下吧
    2017-11-11

最新评论

?


http://www.vxiaotou.com