angularJS:用于多个模式匹配的ng-pattern

时间:2013-12-26 17:52:26

标签: javascript regex angularjs

验证以逗号分隔的值的常见方法是将它们拆分为数组,然后对每个成员执行regEx匹配。但是,我想利用Angular的即时验证并在视图中执行此匹配。

我的注册表:

^\d{5}?,*$

在第一场比赛中表现完美,但我不知道如何要求它检查这种模式n次。

表格代码:

        <form id="zipCodeForm" name="zipCodeForm"  ng-submit="submit()" >
            <input id="zipCodeInput" ng-model="text" name="text" type="text"
            required ng-pattern="/^\d{5}?,*$/" > </input>

            <input id="zipSubmit" type="submit" value="Submit" class="btn btn-large btn-primary"></input>
            <div class="alert alert-info formatguide" ng-show="zipCodeForm.text.$dirty && zipCodeForm.text.$invalid">
               Enter Comma Separated 5-Digit Zip Codes ex.(11111,22222,33333)
            </div>
        </form>

1 个答案:

答案 0 :(得分:3)

如果您不知道有多少邮政编码,但至少需要一个,那么这个 ^\d{5}(?:,\d{5})*$

如果您知道多少,请使用此 ^\d{5}(?:,\d{5}){how many - 1}$

编辑 - 两个正则表达式解释了。

 ^                    # Begining of string
 \d{5}                # followed by 5 digits
 (?:                  # Cluster group
      ,                    # a literal comma
      \d{5}                # followed by 5 digits
 )*                   # End Cluster group, optionally do many times
 $                    # End of string

 # ---------------------------------------------------------

 ^                    # Begining of string
 \d{5}                # followed by 5 digits
 (?:                  # Cluster group
      ,                    # a literal comma
      \d{5}                # followed by 5 digits
 ){3}                 # End Cluster group, do exactly 3 times
 $                    # End of string