Я использую Angular9 и пытаюсь проверить, является ли введенный номер номером или адресом электронной почты или идентификатором. Но при попытке проверить числа он дает true для нечетной длины чисел и false для четной длины чисел.
Вот мой код:
readonly patterns = {
numbersOnly: /^[0-9]*$/gm,
emailRegex: /\S+@\S+\.\S+/gm,
numberRegex: /^\d+$/gm,
idRegex: /^(\d{13}-\d{1,}100)?$/gm
};
patternOutput = {
numbersOnly: false,
emailRegex: false,
numberRegex: false,
idRegex: false
};
onInputChange(str: string) {
console.log('=====',str,'=====');
const numberOnlyRegex = this.patterns.numbersOnly;
const emailRegex = this.patterns.emailRegex;
const numberRegex = this.patterns.numberRegex;
const idRegex = this.patterns.idRegex;
this.patternOutput.numbersOnly=numberOnlyRegex.test(str);
console.log('numbersOnly=>',this.patternOutput.numbersOnly);
this.patternOutput.emailRegex=emailRegex.test(str);
console.log('emailRegex=>',this.patternOutput.emailRegex);
this.patternOutput.numberRegex=numberRegex.test(str);
console.log('numberRegex=>',this.patternOutput.numberRegex);
this.patternOutput.idRegex=idRegex.test(str);
console.log('idRegex=>',this.patternOutput.idRegex);
}
Вот тот же рабочий код https://stackblitz.com/edit/angular-qmhfvf
Одна вещь, которую я заметил, когда проверил сформированный объект регулярного выражения:
Здесь я вижу, что есть ключ с именем lastIndex
, значение которого в 1-м объекте равно 0, а во 2-м объекте - 8