Цитата glukin:
уже есть гигантский скрипт на vbs, надо мне будет этот кусок туда внедрить. »
|
Значит, надо написать функцию, вызов которой можно вставить, например, в If, в аргументе которой DNS, а возвращает она или Истину (правильное DNS) или Ложь.
Если тупо решать задачу, как она поставлена, нагло заимствовать регулярку у Iska
Код:
MsgBox "Device1.domain1.ru" + " === " + CStr(X_DNS("Device1.domain1.ru"))
MsgBox "Device1.domain+1.ru" + " === " + CStr(X_DNS("Device1.domain+1.ru"))
MsgBox "Device1.domainЪ1.ru" + " === " + CStr(X_DNS("Device1.domainЪ1.ru"))
MsgBox "Device1..domain1.ru" + " === " + CStr(X_DNS("Device1..domain1.ru"))
MsgBox "Device1.domain1-.ru" + " === " + CStr(X_DNS("Device1.domain1-.ru"))
MsgBox ".Device1.domain1.ru" + " === " + CStr(X_DNS(".Device1.domain1.ru"))
MsgBox "Device1.domain1.ru-" + " === " + CStr(X_DNS("Device1.domain1.ru-"))
MsgBox "device-2.domain.1.ru3" + " === " + CStr(X_DNS("device-2.domain.1.ru3"))
MsgBox "45-deVice.3.domain-4.5ru" + " === " + CStr(X_DNS("45-deVice.3.domain-4.5ru"))
'''''''''''''''''''''''''''''
Function X_DNS(x)
X_DNS = True
With CreateObject("VBScript.RegExp")
.Pattern = "^([a-z0-9]|[a-z0-9][a-z0-9\-]{0,61}[a-z0-9])(\.([a-z0-9]|[a-z0-9][a-z0-9\-]{0,61}[a-z0-9]))*$"
.IgnoreCase = True
.Global = True
X_DNS = .Test(x)
If Not X_DNS Then Exit Function
End With
X_DNS_Err = Array("..", "--", "-.", ".-")
X_DNS_Err1 = Array(".", "-")
For Each X_DNS_i In X_DNS_Err
X_DNS = InStr(1, x, X_DNS_i) = 0
If Not X_DNS Then Exit Function
Next
For Each X_DNS_i In X_DNS_Err1
X_DNS = Left(x, 1) <> X_DNS_i And Right(x, 1) <> X_DNS_i
If Not X_DNS Then Exit Function
Next
End Function