我'我试图通过不引人注意的验证来验证我的表单中的IPv4地址。所有其他验证工作正常,但这个是注意工作。
我定义了这样的属性模型:
[RegularExpression(ipAdressRegEx, ErrorMessageResourceName = "IPInvalid", ErrorMessageResourceType = typeof(Strings))]
public virtual String IP { get; set; }
我的RegEx:
private const string ipAdressRegEx = @"/\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/g";
生成的HTML如下所示:
<input class="k-textbox" data-val="true" data-val-regex="Invalid IP"
data-val-regex-pattern="/\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/g"
id="IP" name="IP" type="text" value="">
<span class="field-validation-valid" data-valmsg-for="IP" data-valmsg-replace="true"></span>
但验证显示错误无效的IP错误消息,例如,ip =&#34; 192.168.1.1&#34;。
如果我将以下内容放入浏览器控制台:
"192.168.1.1".match(/\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/g)
(使用传递给输入验证的模式)它返回IP,这是正确的。
我不明白为什么这种不引人注目的验证在这种情况下不起作用......
我尝试了不同的模式......
答案 0 :(得分:2)
松开字符串中指定的斜杠和g
选项。这些是正则表达式的JavaScript分隔符。通过API传递正则表达式时不需要。
data-val-regex-pattern="\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"
答案 1 :(得分:1)
您可以创建像
这样的方法private boolean checkIp(String ipValue,String regex){
return ipValue.matches(regex);
}
checkIp(yourIpValue, "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."
+ "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."
+ "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."
+ "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$")
答案 2 :(得分:0)
因为我只是认为生成的不引人注目的html html可能会对Regex在客户端和服务器上的行为产生一些问题。这里的文章解释并提供了一些解决方法
答案 3 :(得分:0)
关注
$("#adressIP, #GatewayInp, #SubnetMask").keyup(function() {
var input = $(this).val();
console.log(input);
var regex = new RegExp('(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$');
if (regex.test(input)) {
console.log("match");
} else {
console.log("nomatch");
}
});
答案 4 :(得分:-1)
function ValidateIPaddress(ipaddress)
{
if (/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(ipaddress))
{
return (true)
}
alert("You have entered an invalid IP address!")
return (false)
}