Javascript RegEx частичное совпадение
У меня есть шаблон регулярного выражения, который проверяет трехзначное число
/^\d{3}$/.test("123") // true
/^\d{3}$/.test("123.") // false
Я хочу использовать это регулярное выражение в качестве ограничения ввода для текстового поля.
Обычно, если новое значение совпадает, я позволяю вводить символ, в противном случае я запрещаю это.
Проблема в том, что никакое значение никогда не будет совпадать, потому что «1» не является полным совпадением и не позволит мне его напечатать.
Есть ли способ проверить частичное совпадение для regEx в JavaScript?
/^\d{3}$/.test("123") // true
/^\d{3}$/.test("12") // "partial match"
/^\d{3}$/.test("a12") // false
РЕДАКТИРОВАТЬ
\ d {3} был просто примером. Мне нужно использовать регулярное выражение электронной почты или телефонное ограничение в качестве ограничения ввода.
"email" // true
"email@" // true
"email@@" // false
"@yahoo.com" // false
РЕДАКТИРОВАТЬ 2
У меня есть плагин textBox с ограничением ввода на основе регулярного выражения.
Регулярное выражение может быть любым, например, Regex шестнадцатеричного цвета: (#) {1} ([a-fA-F0-9]) {6}
Мне нужно запретить пользователю вставлять символы, которые не соответствуют регулярному выражению.
Например, если текстовое поле пустое, первым разрешенным символом будет «#».
Но если я проверю символ «#» на регулярном выражении, он вернет «ложь», потому что «#» само по себе недопустимо.
/^(#){1}([a-fA-F0-9]){6}$/.test("#") // false
Но в то же время, "#" является действительным частично, потому что он уважает формат регулярного выражения (и я должен позволить пользователю печатать его)
Что мне нужно знать, так это то, могу ли я проверить, является ли строка частичным совпадением регулярного выражения, поэтому я могу позволить пользователю вводить символ.
/^(#){1}([a-fA-F0-9]){6}$/.test("#") // is a partial match, allow type
/^(#){1}([a-fA-F0-9]){6}$/.test("#0") // is a partial match, allow type
/^(#){1}([a-fA-F0-9]){6}$/.test("#00") // is a partial match, allow type
/^(#){1}([a-fA-F0-9]){6}$/.test("#000") // is a partial match, allow type
/^(#){1}([a-fA-F0-9]){6}$/.test("#0000") // is a partial match, allow type
/^(#){1}([a-fA-F0-9]){6}$/.test("#00000") // is a partial match, allow type
/^(#){1}([a-fA-F0-9]){6}$/.test("#000000") // is a partial match, allow type
/^(#){1}([a-fA-F0-9]){6}$/.test("#000000D") // is not a match, prevent typing