如何验证AngularJS中文本字段中的IP?目前我正在使用此代码,但它并不适用于所有情况。有什么想法吗?
ng-pattern='/^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/
答案 0 :(得分:10)
使用:
/\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/
匹配0.0.0.0至255.255.255.255
如果您要删除0.0.0.0
和255.255.255.255
,建议您添加其他if
声明。否则正则表达式会太复杂。
观察者示例:
$scope.ip = '1.2.3.4';
$scope.$watch(function () {
return $scope.ip;
},
function (newVal, oldVal) {
if (
newVal != '0.0.0.0' && newVal != '255.255.255.255' &&
newVal.match(/\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/))
{
// Match attempt succeeded
} else {
// Match attempt failed
}
})
演示 Fiddle
<强> [编辑] 强>
最好的办法是创建指令,例如:<ip-input>
此示例可能有助于如何为自定义输入创建指令:format-input-value-in-angularjs