Value.match (/ [^ 0-9 | \ /] / gi) не работает для чисел? - PullRequest
0 голосов
/ 01 мая 2020
if (value.match(/[^0-9|\/]/gi)) {
   super.setValue(this.value, { ...options, emitModelToViewChange: true });
   return;
}

Почему это value.match не работает?

Это скопировано из учебника и для инструктора работает нормально.

Это должно быть true, если я введу число или '/' на входе, но в моем случае это выражение if никогда не будет выполнено.

Спасибо за вашу помощь .

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

В регулярном выражении ^ обозначает НЕ. Вы поставили НЕ в диапазоне 0-9 или '/'. Ваше текущее регулярное выражение вернет true для алфавита. Удалите ^ и попробуйте это:

if (value.match(/[0-9|\/]/gi)) {
   super.setValue(this.value, { ...options, emitModelToViewChange: true });
   return;
}

Это должно вернуть true для числа или '/'. / [^ [0-9] | /] / gi будет иметь значение true для '/', но не для числа.

0 голосов
/ 01 мая 2020

[^0-9] Соответствует любым символам, кроме символов в диапазоне 0-9

// E.g.

"9".match(/[^0-9|\/]/g) // null
"9".match(/[^0-5|\/]/g) // ["9"]
...