Regex DD-MM работает в JavaScript, но не в шаблоне HTML - PullRequest
0 голосов
/ 03 декабря 2018

Я написал регулярное выражение для проверки действительного DD-MM.Регулярное выражение:

^ ((0 [1-9] | [12] \ d | (3 [01])) + - (0 [13578] | 1 [02])) | ((0 [1-9] | [12] \ д | (3 [0])) + - (0 [469] | 1 [1])) | ((0 [1-9] | [1] \ д| (2 [0-9])) + - (0 [2])) $

Отлично работает в Javascript / TypeScript.

public isValidDob(ddmm) : boolean {
    const regex = /^((0[1-9]|[12]\d|(3[01]))+\-(0[13578]|1[02]))|((0[1-9]|[12]\d|(3[0]))+\-(0[469]|1[1]))|((0[1-9]|[1]\d|(2[0-9]))+\-(0[2]))$/gm;
    const re = new RegExp( regex, "g" );
    const isValid = re.test(ddmm);
    return isValid;
  }

Но в угловом HTMLNgForm, шаблон регулярного выражения не работает.

<input type="text" 
[(ngModel)]="person.wishDob" name="wishDob" #wishDob="ngModel" 
pattern="^((0[1-9]|[12]\d|(3[01]))+\-(0[13578]|1[02]))|((0[1-9]|[12]\d|(3[0]))+\-(0[469]|1[1]))|((0[1-9]|[1]\d|(2[0-9]))+\-(0[2]))$" 
minlength="5" maxlength="5" />

Мне не хватает экранирующего символа здесь?ИЛИ () И ИЛИ |не допускается в шаблоне HTML?

1 Ответ

0 голосов
/ 03 декабря 2018

После изменения HTML-части регулярного выражения я могу это исправить.Пожалуйста, найдите измененную часть.Предложите, если хотите что-то добавить.

pattern = "^ ((0 [1-9] | (1 [0-9]) | (2 [0-9]) | (3[01])) + - (0 [13578] | 1 [02])) | ((0 [1-9] | (1 [0-9]) | (2 [0-9]) | (3 [0])) + - (0 [469] | 1 [1])) | ((0 [1-9] | (1 [0-9]) | (2 [0-9])) + - (0[2])) $ "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...