Сбой при разборе модуля: литерал Octal в строгом режиме, может использовать регулярное выражение без конструктора - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь поместить ниже регулярное выражение в Angular6:

const regexp = new RegExp('^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$');

Но, как это подразумевается, это бросает

Module parse failed: Octal literal in strict mode 

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

Пожалуйста, предложите решение.

1 Ответ

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

Использование оператора .test для регулярного экспресса помогло мне, вот рабочий код того же самого:

if (/^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/.test(record['dateofbirth'])) {
            this.validated = false;
            this.validatedtext = this.validatedtext + '\n Date of Birth for record no. ' + i + ' is not correctly formatted';
          }

и эта ссылка помогла мне:

https://toddmotto.com/understanding-regular-expression-matching-with-test-match-exec-search-and-split/

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