验证 A-Z0-9 的最大长度为 10,但允许用户输入空格(但最多跳过空格)

Validate A-Z0-9 has maxlength 10, but allow user to enter spaces (but skip spaces in maximum)

我想知道是否有一种简单的方法可以在表单文本字段上设置此验证,而无需创建自定义指令。

我需要验证 {minlength: 2, maxlength: 10},用户可以输入 [A-Z0-9\s] 的任意组合,但只有 A-Z0-9 的数量会进入最小和最大计数。

这可能吗?

我在想也许可以使用 ng-pattern 和一些神奇的正则表达式来解决这个问题。如果 ng-pattern 匹配失败,只需要一条错误消息即可触发。

正则表达式^\s*(?:[A-Z0-9]\s*){2,10}$ 将给出您所要求的。它分解为:

^\s*                            - start with 0 or more white space characters
       [A-Z0-9]                 - then one of A-Z or 0-9
               \s*              - then any number of additional 
                                  white space chars (including 0)
    (?:           ){2,10}       - repeat all that 2-10 times
                         \s*$   - and allow trailing white space

编辑: 更新为使用非捕获组(我没有意识到 ngPattern 受支持)。