Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Angular ng模式不检查我的正则表达式的字符上限_Regex_Angularjs - Fatal编程技术网

Regex Angular ng模式不检查我的正则表达式的字符上限

Regex Angular ng模式不检查我的正则表达式的字符上限,regex,angularjs,Regex,Angularjs,我刚刚开始用一些正则表达式测试ng模式,这些正则表达式我在非角度项目中使用过,并且工作得很好。但使用ng模式,它们似乎不起作用。例如,我有一个正则表达式,它可以成功地检查至少包含1个字母和1个数字字符的6-20个字符的字符串: "^.*(?=.{6,20})(?=.*\d)(?=.*[a-zA-Z]).*$" 但是,在我下面的示例中,它成功地检查了所有内容,但字符串超过20个字符时未触发: <div class="controls"> <input t

我刚刚开始用一些正则表达式测试ng模式,这些正则表达式我在非角度项目中使用过,并且工作得很好。但使用ng模式,它们似乎不起作用。例如,我有一个正则表达式,它可以成功地检查至少包含1个字母和1个数字字符的6-20个字符的字符串:

"^.*(?=.{6,20})(?=.*\d)(?=.*[a-zA-Z]).*$"
但是,在我下面的示例中,它成功地检查了所有内容,但字符串超过20个字符时未触发:

<div class="controls">
            <input type="text" ng-model="user.Password" id="Password" name="Password" title="Password" required ng-pattern="^/.*(?=.{6,20})(?=.*\d)(?=.*[a-zA-Z]).*$/" />
            <span ng-show="form.Password.$dirty && form.Password.$error.required">{{'_PasswordRequired_' | i18n}}</span>
            <span ng-show="form.Password.$dirty && form.Password.$error.pattern">{{'_PasswordLengthAndAlphanumeric_' | i18n}}</span>
        </div>

{{''u密码必需{''i18n}
{{{u PasswordLengthAndAlphanumeric}

语法中是否有错误,或者是否有其他原因导致此操作不起作用?

您缺少一个结束锚,并且您有一个
*
太多(在开始时):

但无论如何,在前瞻之外进行长度检查会更容易(也更明显):

"^(?=.*\d)(?=.*[a-zA-Z]).{6,20}$"

(这反过来让我问你为什么要设置这么低的上限?例如,我的KeePass生成的密码长度通常至少为30个字符)

谢谢Tim,关于正则表达式,我并不声称自己有很多知识……非常感谢您提供的有益解释:)这只是一个学习练习,主要是因为下限和上限并不是一个真正的问题。在正则表达式语法方面,Angular似乎更为严格,因为这在非Angular项目中确实有效。
"^(?=.{6,20}$)(?=.*\d)(?=.*[a-zA-Z]).*$"
"^(?=.*\d)(?=.*[a-zA-Z]).{6,20}$"