2017-06-04 157 views
3

我正在創建一個角度表單,要求名稱字段只包含字母數字字符和空格。要做到這一點,我使用模式屬性:Angular 2表單驗證模式正則表達式錯誤

<input type="text" class="form-control" placeholder="Name" name="Name" [(ngModel)]="name" required pattern="/^[a-z\d-_\s]+$/i" #nameField="ngModel"> 

,我有以下錯誤消息我想表明,當字符串不匹配:

<div *ngIf="nameField.errors"> 
    <div [hidden]="!nameField.errors.pattern"> 
     <p class="has-error"> 
      Only spaces, letters, and numbers are allowed. 
     </p> 
    </div> 
</div> 

然而,似乎即使串應該匹配正則表達式,我仍然可以看到錯誤消息。有任何想法嗎?

+0

我認爲它應該是這樣的: happyZZR1400

+0

嘗試'pattern =「^ [\ w \ s - ] + $」' –

回答

1

您可以使用

pattern="^[\w\s-]+$" 

[A-Za-z\d_]相同字符相匹配在JavaScript原生正則表達式中爲\w。整個模式因此匹配一個或多個ASCII字母,數字,下劃線,連字符或空格。

注意角度錨默認的模式,但最好是保持錨^$明確的模式,使其與任何其他框架兼容。

+0

感謝您的簡潔回答。正是我在找什麼。 –

3

我想這裏的問題是,正則表達式的語法不正確形成:

<form novalidate #f="ngForm" novalidate> 
    <input type="text" 
    class="form-control" 
    placeholder="Name" name="Name" 
    [(ngModel)]="name" 
    required pattern="^[A-Z\\a-z\\d-_\\s]+$" 
    #nameField="ngModel" > 
    <div> 
     <div *ngIf="nameField.errors?.pattern"> 
     <p class="has-error"> 
      Only spaces, letters, and numbers are allowed. 
     </p> 
     hame: {{nameField.errors | json}} 
    </div> 
    </div> 
    </form> 

看看這個plunkr

+0

感謝您的幫助。當你的答案奏效時,你的答案在你的工作中對我的具體情況好一點,所以我將它標記爲答案。 –