0

我正在尝试创建一个正则表达式来在一行中查找域名。

目前,我尝试了这个,但没有工作。

Set objDomainEx = CreateObject("VBScript.RegExp")
objDomainEx.Global = True   
objDomainEx.Pattern = "((?:[A-Z0-9-]+\.)+[A-Z]{2,4})$"
Set matches = objDomainEx.Execute(strSearchString) 
If matches.Count > 0 Then
    For Each strMatch in matches    
       Wscript.Echo strMatch.Value
    Next
End If

这有什么问题。我的域名看起来像 [www.]aaaaa.sssss.vvvvv.domain 或类似的东西

4

2 回答 2

1

您的字符类不包括小写字母。你也应该包括在内[a-z]

((?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4})$

或者,您可以将 Regex 对象设置为不区分大小写

objDomainEx.IgnoreCase = True
于 2013-10-22T12:56:07.413 回答
0
objDomainEx.Pattern = "((?:[A-Z0-9-]+\.)+[A-Z]{2,4})$"

我的域名看起来像 [www.]aaaaa.sssss.vvvvv.domain

所以这里的问题是:

  1. 您的正则表达式似乎只匹配大写字母。

  2. 您的正则表达式假定域的最后部分最多只能包含 4 个字符。(有些域的后缀比这更长)。

于 2013-10-22T12:57:04.480 回答