Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Цитата 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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:56, 01-12-2019 | #25