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

时间:2016-11-16 05:54:39

标签: 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></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>

1 个答案:

答案 0 :(得分:2)

  

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

要实现此目的,您应该对字符类[] 而不是组()应用范围限制。

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

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

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