angular - 验证邮政编码在 Angular 4 中只允许长度为 5 或 7 位数字

标签 angular angular4-forms angular-validation

我正在使用 Angular 4。我想允许 zipCode输入字段只接受长度为 5 或 7 位的输入。

HTML代码:

<md-input-container class="fill-width-input-wrap">
    <input mdInput placeholder="Zip Code" formControlName="zipCode" minLength="5" maxLength="7" (keypress)="allowOnlyNumbers($event)" required>
    <md-error *ngIf="clientInformationForm.controls['zipCode'].hasError('required')">
        Please enter
        <strong>valid zipcode</strong>
    </md-error>
    <md-error *ngIf="clientInformationForm.controls['zipCode'].hasError('minLength')">
        zip code
        <strong>minimum length is 5</strong>
    </md-error>
</md-input-container>

最佳答案

我猜你想要 pattern 属性

<input mdInput formControlName="zipCode" 
       minLength="5" maxLength="7" 
       pattern="zipPattern" 
       (keypress)="allowOnlyNumbers($event)"
       required>
    <md-error *ngIf="clientInformationForm.controls['zipCode'].hasError('pattern')">
        zip code must satisfy pattern
    </md-error>
    ...

其中 zipPattern 类似于 ^\d{5}(?:\d{2})?$ :
const pattern = new RegExp(/^\d{5}(?:\d{2})?$/)
'1234'.match(pattern) // null
'12345'.match(pattern) // ["12345"
'123456'.match(pattern) // null
'1234567'.match(pattern) // ["1234567"
'12345678'.match(pattern) // null

关于angular - 验证邮政编码在 Angular 4 中只允许长度为 5 或 7 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51000480/

相关文章:

javascript - 如何以一种不会中断使用普通旧式 JavaScript 访问对象的方式导出 TypeScript 类

validation - Angular 2 paper-input 和表单处理

Angular,如何为两个字段中的任何一个设置验证应在 react 形式方法中进行验证

angular - 如何以 Angular 形式显示服务器验证错误

css - Angular Material2 - 以编程方式设置颜色

angular - 如果类在模板驱动形式 Angular 4 中无效,为什么类不应用于输入元素?

angular - 如何在 PrimeNG 自动完成文本框的 `onBlur` 事件上将值传递给我的组件?

angular - 如何迭代现有的 FormControl 验证器

angular - FormGroup 获取字段值 : TypeError: Cannot read property 'get' of undefined

angular - RxJS 重构嵌套 map 语句