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

Ответы на вопрос(6)

Ваш ответ на вопрос