我正在尝试使用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");
答案 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个非空白字符$
- 字符串结束。