vb中使用正则的几个方法

71 篇文章 6 订阅
47 篇文章 1 订阅

许多程序设计语言都支持利用正则表达式进行字符串操作,基本都是直接内置,直接使用,而我们的vb6太老了,没有内建封装,只能通过第三方组件来使用,总结了下不外乎下面3种方法。

方法一:使用CreateObject("VBSCRIPT.REGEXP"),这是最常用的,与vb最融洽。范例:

Private Sub Command1_Click()
    Dim reg As Object, s As String
    Dim match As Object, matchs As Object
    Set reg = CreateObject("vbscript.regExp")
    reg.Global = True
    reg.Pattern = "href='(.*?)'" '获取html中a标签中的网址
    Set matchs = reg.Execute("<a href='baidu.com'>baidu</a>")
    For Each match In matchs
        Debug.Print match.submatches(0)
    Next
End Sub

方法二:CreateObject("ScriptControl"),这个实际是调用JavaScript中的正则功能,不如上面的好用,获取值的话比较麻烦,不过要是只用replace还行,比较方便,比如下面的范例“删除非数字部分,只保留数字”:

Private Sub Command1_Click()
    Dim sc As Object, s As String
    Set sc = CreateObject("ScriptControl")
    sc.Language = "JavaScript"
    s = sc.Eval("'BCJT100116660013555022CCR5'.replace(/[^\d]/g, '');")
    MsgBox s
End Sub

方法三:通过webbrowser,这个不常用使用也不方便,本质还是通过调用JavaScript的正则功能。需要引入一个webbrowser控件,然后用它的WebBrowser1.Document.parentWindow.ExecScript方法。

如果在你的程序中本身就需要用到webbrowser而不是为了用正则专门加入这个控件的情况下还是可以的,专门为了用正则而去引入一个webbrowser控件是不建议这么操作的。有时我们需要操作webbrowser中的一些的元素其实都可以直接在ExecScript方法中完成的,不用与vb交互。如果需要与vb交互得创建个js中间变量。例如下的范例“删除非数字部分,只保留数字”:

Private Sub Command1_Click()
    WebBrowser1.Navigate "about:blank" '载入文本对象,不然下面无法使用Document对象
    WebBrowser1.Document.parentWindow.ExecScript "var s='BCJT100116660013555022CCR5'.replace(/[^\d]/g,'');"
    MsgBox WebBrowser1.Document.Script.s
End Sub

天啊,竟然这么短。可是如果就简单处理下字符要引入个对象就有点滥用了,还得看实际情况看使用场景。

方法四(赠品):通过调用外部程序mshta。严格来说这不是vb的了,因为值没有办法传递到vb里,只是显示值而已。

Private Sub Command1_Click()
    Shell "mshta javascript:alert('BCJT100116660013555022CCR5'.replace(/[^\d]/g,''));close()"
End Sub

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无·法

别打赏了,这C币又不能买咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值