Вам нужно начать с символа ^
, чтобы он соответствовал с самого начала, и символа $
, чтобы он совпадал до конца. В противном случае он будет соответствовать тому, что может, и проигнорировать все, что не подходит за пределами этого. Вы также можете быть более директивными. Например, символ +
может быть разрешен только в качестве первого символа, или вы можете указать, чтобы было как минимум 7 символов. Пример кода ниже показывает некоторые из них.
// r1 fixes the one you were trying by adding ^ and $
const r1 = /^[-+0-9()\s]*$/
// = =
// r2 adds rules like a "+" can only appear at the start
// and there must be at least 7 digits
const r2 = /^\+?[-0-9()\s]{7,}$/
// === ====
const tests = [
"123 456-7890",
"789",
"+4 9084342",
"hello",
"123+457+432",
"1234567!"
]
for (const num of tests) console.log(`r1: ${r1.test(num)} - ${num}`)
console.log("-----")
for (const num of tests) console.log(`r2: ${r2.test(num)} - ${num}`)