En este caso, devuelve verdadero, pero necesito que devuelva falso. Intenté agregar [()]{0,1} pero creo que solo se refiere a uno"(o)". ¿Hay alguna forma en que pueda hacer [(&)]{0,1} para que "(" y " )" ambos tienen que suceder al menos una vez. Gracias
function telephoneCheck(str) { const regex = /^[1]{0,1}[-\s]?[(]?\d{3}[-)\s]?[\s]?[\d]{3}[-\s]?[\d]{4}$/g return regex.test(str) } console.log(telephoneCheck("1 555)555-5555"));Dado que su ejemplo involucra números de teléfono, supondré que solo está buscando un par de paréntesis y en un lugar en particular. Puede usar la alternancia para verificar esto:
/^1?[-\s]?(?:\(\d{3}\)|\d{3})[-\s]?\d{3}[-\s]?\d{4}$/g La clave es el grupo que no captura que comienza con (?: que elegirá una secuencia de tres dígitos entre paréntesis o una secuencia de tres dígitos sin paréntesis. También simplifiqué el resto de su expresión regular ya que no necesita usar tantos corchetes.