我有正则表达式$scope.pa = /^([\w-~!@#\$]+)$/i
,它可以满足我的要求。现在我想限制这个正则表达式,以便它只允许0到15个字符。所以我把它改为$scope.pa = /^([\w-~!@#\$]+){0,15}$/i;
但是0到15个字符的限制没有成功。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular.min.js"></script>
</head>
<body ng-app="app">
<div ng-controller="controllerName">
<ng-form name="mailForm">
Pname: <input type="text" ng-model="pname" name="pname" ng-pattern="pa" /><br />
<span ng-show="mailForm.pname.$error.pattern" style="color:red">Please enter pname</span>
</ng-form>
</div>
<script>
var app = angular.module("app", []);
app.controller('controllerName', ['$scope', function ($scope) {
$scope.pname = "abcd267g";
$scope.pa = /^([\w-~!@#\$]+)$/i;
}]);
</script>
</body>
</html>
答案 0 :(得分:2)
现在我想限制这个正则表达式,以便它只允许0到15个字符。
要实现此目的,您应该对字符类[] 而不是组()应用范围限制。
现在您已将其应用于整个组 /^([\w-~!@#\$]+){0,15}$/i
,重复无限字符0到15次。这会使范围限制无用。
因此,{0,15}
应该在[\w-~!@#\$]
之后,而你的正则表达式将是:
/^([\w\-~!@#\$]{0,15})$/i;