需要检查srv pregmatch

时间:2018-04-22 19:21:07

标签: javascript regex

我正在尝试使用jquery preg_match验证srv记录

我需要什么:'PriorNumber WeightNumber PortNumber地址/服务器'。 这需要限制在最多5个部分。

现在我有一部分工作但是当我使用域名或IP地址时,只有最后一部分不起作用。

/^((\d+ \d+ \d+\w+.(?:\s+\w+)\1{0,1}$))/

作品= 100 1 4234 sipdsdfghj

不工作:100 1 4234 sipdsdfghj.sadas

https://www.regextester.com/?fam=103214

请帮我解决这个问题

完整代码验证

value = 100 1 4234 sipdsdfghj.asd

// Functie voor het valideren van srv record 'prioriteit gewicht poort doeladres'
jQuery.validator.addMethod("srvRecord", function(value, element) {
    if (value.indexOf(' ') >= 0) {

        console.log(value);

        if(value.match( /^(?<prior>\d+)\h+(?<weight>\d+)\h+(?<port>\d+)\h+(?:(?<ip>\d{1,3}(?:\.\d{1,3}){3})|(?<domain>\S+\.\S+))$/gm) !== null){
            return true;
        }

        return false
    } 
}, "* Amount must be greater than zero");

1 个答案:

答案 0 :(得分:1)

您可以尝试使用此正则表达式解决方案:

/^\d+(?:\s+\d+){2}\s+(?:\d{1,3}(?:\.\d{1,3}){3}|\S+\.\S+)$/

请注意,它并不真正验证IP或域名,它只匹配类似IP和类似域的子字符串。有关更精确的IP正则表达式的详细信息,请参阅Regular expression to match DNS hostname or IP Address

<强>详情

  • ^ - 字符串开头
  • \d+ - 1+位数
  • (?:\s+\d+){2} - 2个1+空格和1+位数的序列
  • \s+ - 1+空格
  • (?:\d{1,3}(?:\.\d{1,3}){3}|\S+\.\S+) - 以下任何一项:
    • \d{1,3}(?:\.\d{1,3}){3} - 1到3位数字,然后是.和1到3位数的3个序列
    • \S+\.\S+ - 1个非空白字符,.以及1个非空白字符
  • $ - 字符串结束。