excel自定义函数使用正则表达式

https://yq.aliyun.com/ziliao/28229

函数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标记的正则表达式:/<(.*)>.*|<(.*) />/

匹配首尾空格的正则表达式:(^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]*$

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 文章转载地址: http://www.open-open.com/code/view/1430625516632 ...
    得起一个清新脱俗的名字阅读 2,290评论 1 3
  • 正则表达式到底是什么东西?字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等...
    狮子挽歌阅读 2,287评论 0 9
  • 一、校验数字的表达式 二、校验字符的表达式 三、特殊需求表达式 一.网络验证应用技巧 验证 E-mail格式 验证...
    丶legend阅读 1,493评论 0 22
  • Java的正则表达式讲解:(为了能看清,本文正则表达式用中文的句号代替英文句点) 英文句点符号:匹配单个任意字符。...
    红姑娘阅读 4,522评论 0 2
  • 声明:本文基本是转载千叶的博客,里面稍微修改。 一、通过第三方类库正则匹配 在ios项目中可以借用第三方框架Reg...
    黑夜0411阅读 1,309评论 0 0

友情链接更多精彩内容