我在這里閱讀了一些關于使用正則運算式驗證日期表單控制元件的帖子,但其中大多數都使用自定義日期驗證代碼。我正在嘗試使用模式方法中的日期正則運算式來獲得反應形式的 setValidators 方法。我發現了一些日期正則運算式,但我收到一個錯誤,即使對于有效的 MM/DD/YYYY 格式也會觸發驗證錯誤。
對于 reg 運算式,我嘗試了以下字串
datePattern1: string = '^\d{2}\/\d{2}\/\d{4}$';
datePattern1: string = '^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\\d{4}$';
對于 Reactive Form 日期控制元件是 TS 代碼
startDate?.setValidators([Validators.required,
Validators.pattern(this.datePattern1)];
在 HTML 代碼中
<input type="date" class="form-control form-cntrl" formControlName="startDt" aria-label="Start Date"
[ngClass]="{'has-error': (startDt.invalid && startDt.touched)}" >
<span *ngIf="startDt.invalid && startDt.touched">
<br/>
<small *ngIf="startDt.errors.required" class="text-danger">Start Date is required</small>
<small *ngIf="startDt.errors.pattern" class="text-danger">Start Date Format MM/DD/YYYY is invalid</small>
</span>
所需的驗證器作業正常。但日期格式總是觸發。我嘗試了從幾篇文章中找到的 3 個正則運算式字串,但我無法讓它作業。
任何幫助都會很棒!謝謝!
uj5u.com熱心網友回復:
我過去也遇到過同樣的問題。根據我的經驗,您最好將模式直接定義為 RegExp 格式/regexp/。因為如果您使用字串,您還必須轉義反斜杠才能使其正常作業,而且很容易忘記。
例如,您的第一個模式可以是:
datePattern1: RegExp = /^\d{2}\/\d{2}\/\d{4}$/
或者使用字串它應該是:
datePattern1: string = '^\\d{2}\\/\\d{2}\\/\\d{4}$'
干杯
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/425408.html
