2016-10-17 58 views
2

我有一個問題,驗證輸入到我的角度2表單中的密碼至少包含一個數字。其他驗證工作只是這個模式。我使用的正則表達式我從 得到Regex: Check if string contains at least one digit Angular2表單驗證檢查編號

密碼:

<div *ngIf="signUpForm.controls['password'].invalid && signUpForm.controls['password'].dirty"> 
     <small *ngIf="signUpForm.controls['password'].errors.minlength"> 
          Please enter a minimum of 6 characters 
         </small> 
     <small *ngIf="signUpForm.controls['password'].errors.maxlength"> 
          Password cannot exceed 15 characters 
         </small> 
     <small *ngIf="signUpForm.controls['password'].errors.pattern"> 
          Must contain digits 
         </small> 
</div> 

我的表單中我有以下的驗證,特別我想要的模式是檢查字符串輸入包含許多

"password":["", [ 
       Validators.required, 
       Validators.minLength(6), 
       Validators.maxLength(15), 
       Validators.pattern('/\d') 
      ] 
     ] 

errors.patters ngIf永遠不會消失,即使有字段中的數字,不知道我做錯了什麼。其他領域的其他模式驗證工作。

回答

0

您的圖案\d只能使用一個數字。你需要添加一個量詞。

\d+ 

這將匹配一個或多個數字,但不是空白值。

+0

我曾經嘗試這樣做也沒有運氣 – pwborodich

1

Validators.pattern('\\d+')怎麼樣?

如果我正確理解這個,你需要提供一個反斜槓(不是正斜槓)來轉義反斜槓。

作爲一個正則表達式文字,這看起來像/\d+/,但我不認爲Angular 2支持這些。

UPDATE如果不是那麼它的工作必須是一些與你的設置或角2中的錯誤,我不使用角2親自所以很難說,但你可以看到正則表達式本身是好的:

const regex = new RegExp('\\d+', 'g') 
 
console.info('hiwefwe883290awefoijwfe8382jfwef'.match(regex))

+0

都能跟得上不爲我工作,要麼 – pwborodich

+0

這個解決方案應該工作..它是不工作的最大長度。我可以輸入超過15個字符 – gerl