Excel自定义函数使用正则表达式详解

http://www.111cn.net/office/excel/52912.htm

函数ExStr功能,根据正规表达式,替换或判断或提取字符串
'参数 str 源字符串
'参数 Parttern 正则表达式字符串
'参数 ActionID  函数功能 1正则方法一,替换符合正规表达式的字符
                         ?正则方法二 判断是否有符合正规表达式
                         ?正则方法三,提取符合正规表达式的字符
'参数 Repstr 指定替换的字符,可选项,默认为空

 

代码如下复制代码


Function ExStr(Str As String, Parttern As String, ActionID As Integer, Optional RepStr As String = "")
    Dim regex As Object
    Set regex = CreateObject("vbscript.regexp")
    With regex
        .Global = True
        .IgnoreCase = True
        .MultiLine = True
        .Pattern = Parttern
    End With
    Select Case ActionID
        Case 1:
            ExStr = regex.Replace(Str, RepStr)
        Case 2:
            ExStr = regex.test(Str)
        Case 3:
            Dim matches As Object
            Set matches = regex.Execute(Str)
            For Each Match In matches
                ExStr = ExStr & Match.Value
            Next
    End Select
End Function

附常用几个正规表达式

 

"^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+)?))$"  //非正浮点数(负浮点数 + 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+)?$"  //浮点数
"^[A-Za-z]+$"  //由26个英文字母组成的字符串
"^[A-Z]+$"  //由26个英文字母的大写组成的字符串
"[^a-z+$]"    '由26个英文字母的小写组成的字符串
" [^A-Za-z0-9]+$"  ‘由数字和26个英文字母组成的字符串
"^w+$"  //由数字、26个英文字母或者下划线组成的字符串
"^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$"    //email地址
"^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$"  //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/   // 年-月-日
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/   // 月/日/年
"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"   //Emil
"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?"   //电话号码
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$"   //IP地址
匹配中文字符的正则表达式: [^u4e00-u9fa5]
匹配双字节字符(包括汉字在内):[^x00-xff]
匹配空行的正则表达式:n[s| ]*r
匹配HTML标记的正则表达式:/<(.*)>.*</1>|<(.*) />/
匹配首尾空格的正则表达式:(^s*)|(s*$)
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
匹配网址URL的正则表达式:^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配国内电话号码:(d{3}-|d{4}-)?(d{8}|d{7})?
匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$

 

 

 

http://club.excelhome.net/thread-591254-1-1.html

https://support.office.microsoft.com/zh-cn/article/%e4%bd%bf%e7%94%a8%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e6%9d%a5%e6%9f%a5%e6%89%be%e5%92%8c%e6%9b%bf%e6%8d%a2%e6%96%87%e6%9c%ac%ef%bc%88%e9%ab%98%e7%ba%a7%ef%bc%89-eeaa03b0-e9f3-4921-b1e8-85b0ad1c427f?CorrelationId=d1a13437-cc1f-4f9e-a2ab-c4a94e6e9528&ui=zh-CN&rs=zh-CN&ad=CN

 

用于查找

类型

示例

任一字符

?

s?t 可找到“sat”和“set”。

任何字符串

*

s*d 可找到“sad”和“started”。

单词开头

<

<(inter) 可找到“interesting”和“intercept”,但找不到“splintered”。

单词结尾

>

(in)> 可找到“in”和“within”,但找不到“interesting”。

指定字符之一

[ ]

w[io]n 可找到“win”和“won”。

此范围内的任一字符

[-]

[r-t]ight 可找到“right”和“sight”。范围必须是升序。

除了括号内范围中的字符之外的任一字符

[!x-z]

t[!a-m]ck 可找到“tock”和“tuck”,但找不到“tack”或“tick”。

前一个字符或表达式的 n 个匹配项

{n}

fe{2}d 可找到“feed”,但找不到“fed”。

前一个字符或表达式的至少 n 个匹配项

{n,}

fe{1,}d 可找到“fed”和“feed”。

前一个字符或表达式的 n 到 m 个匹配项

{n,m}

10{1,3} 可找到“10”、“100”和“1000”。

前一个字符或表达式的一个或多个匹配项

@

lo@t 可找到“lot”和“loot”。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值