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

sum*_*ske 7 angular-validation angular angular4-forms

我正在使用 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>
Run Code Online (Sandbox Code Playgroud)

dhi*_*ilt 4

我猜你想要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>
    ...
Run Code Online (Sandbox Code Playgroud)

哪里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
Run Code Online (Sandbox Code Playgroud)