【发布时间】:2015-12-10 00:02:14
【问题描述】:
Word宏中可以直接使用正则表达式吗?
我想检查一个字符串是否只包含数字,下面的代码不起作用。
isNumber = RegEx.IsMatch("234", "[0-9]+$")
我只需要它返回真或假。
【问题讨论】:
Word宏中可以直接使用正则表达式吗?
我想检查一个字符串是否只包含数字,下面的代码不起作用。
isNumber = RegEx.IsMatch("234", "[0-9]+$")
我只需要它返回真或假。
【问题讨论】:
您可以在代码中创建VBScript.Regexp 对象的实例,但更简单的解决方案是使用现有的VBA 函数IsNumeric。两种方法都包含在下面:
Sub testNumeric()
'Use IsNumeric
MsgBox (IsNumeric("12345")) 'Returns true
MsgBox (IsNumeric("123a")) 'Returns false
'Alternatively, using Regexp Object
Dim regexp
Set regexp = CreateObject("VBScript.Regexp")
regexp.Pattern = "[0-9]+$"
MsgBox (regexp.test("12345")) 'Returns true
MsgBox (regexp.test("123a")) 'Returns false
End Sub
请注意,正则表达式模式并不严格返回数字,也包括任何以数字结尾的字符串(即测试“a123”返回 true)。要使正则表达式严格检查数字,模式可以是^[0-9]+$。感谢@mike 指出这一点。
【讨论】: