Javascript Angularjs正则表达式限制字符数问题

Javascript Angularjs正则表达式限制字符数问题,javascript,angularjs,regex,ng-pattern,Javascript,Angularjs,Regex,Ng Pattern,我有一个正则表达式$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></tit

我有一个正则表达式
$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>

Pname:
请输入pname var-app=angular.module(“app”,[]); app.controller('controllerName',['$scope',函数($scope){ $scope.pname=“abcd267g”; $scope.pa=/^([\w-~!@\\$]+)$/i; }]);
现在我想限制这个正则表达式,使它只能允许0到15个字符

要实现这一点,您应该对字符类[]应用范围限制,而不是组()

现在您已经将其应用于整个组
/^([\w-~!@\$]+{0,15}$/i
,它将重复无限个字符0到15次。这使得范围限制无效

因此,
{0,15}
应该在
[\w-~!@\\$]
之后,您的正则表达式将是:

/^([\w\-~!@\$]{0,15})$/i

现在我想限制这个正则表达式,使它只能允许0到15个字符

要实现这一点,您应该对字符类[]应用范围限制,而不是组()

现在您已经将其应用于整个组
/^([\w-~!@\$]+{0,15}$/i
,它将重复无限个字符0到15次。这使得范围限制无效

因此,
{0,15}
应该在
[\w-~!@\\$]
之后,您的正则表达式将是:


/^([\w\-~!@\$]{0,15})$/i

/^[\w\-~!@\\$]{0,15}$/iTushar,工作正常,解决了问题
/^[\w\-~!@\\$]{0,15}$/iTushar,工作正常,解决了问题