AngularJS错误处理程序不适用于与输入结合的单选按钮

Pra*_*eep 5 html javascript jquery angularjs angular-material

我正在尝试添加一个带有2个字段的单选按钮

全部和数字(这是一个输入字段)(请参阅附图中的图片)我试图为输入字段添加错误处理程序.我有数字模式"/ ^ [0-9] {1,5} $ /"(从1到5)如果模式不匹配我想显示错误.

<div id="_work">
   <md-input-container class="md-input-has-value">
      <label>Work is funnnnn</label>
         <md-radio-group layout="row" ng-model="data.group" ng-change='changecolor(data.group)'>
             <md-radio-button value="All Color" class="md-primary"> All </md-radio-button>
             <md-radio-button value="Number" class="md-primary"><LEFT EMPTY></md-radio-button>
         </md-radio-group>
         <md-input-container md-no-float style="float: right; margin: 0px;">
            <input name="num" ng-model="number" placeholder="5" type="text" ng-pattern="/^[0-9]{1,5}$/" class="numberrr" disabled>
            <div ng-messages="num.$error" role="alert">
                <div ng-message="pattern">Looks like it's not a number?</div>
            </div>
         </md-input-container>
   </md-input-container>
</div>
Run Code Online (Sandbox Code Playgroud)

单选按钮链接(图片)

现在问题是我不知道为什么我输入错误消息时,我输入的字数或数字超过5位数.我可以帮助我犯错误的地方.

看到这个没有显示错误信息(图片)

lsn*_*are 1

您的正则表达式的格式略有偏差。当字符串传递给 ng-pattern 时,它会自动用 ^ 和 $ 包裹起来(请参阅文档),因此您不需要这些字符。您也不需要在开头和结尾使用正斜杠,但确实需要将正则表达式包装在字符串中。最后,如果您尝试仅匹配数字 1 到 5,您可以将 ng-pattern 简化为以下内容:

ng-pattern="'[1-5]'"
Run Code Online (Sandbox Code Playgroud)

但是,如果您想匹配 1 到 5 之间的任意数字,则必须使用以下其中一项:

// zero or more digits, from 1-5
ng-pattern="'[1-5]*'"

// one or more digits, from 1-5
ng-pattern="'[1-5]+'"
Run Code Online (Sandbox Code Playgroud)