Estoy buscando algún patrón de expresiones regulares para:
Asi que:
Encontré expresiones regulares que son útiles para reconocer que la cadena solo tiene un signo especial: /^\W*\w.*$/, pero no sé cómo unirla con la condición no solo de caracteres repetidos. Gracias por cualquier consejo.
Puede afirmar no solo los mismos caracteres y asegurarse de hacer coincidir al menos un carácter de una sola palabra.
^(?!(.)\1+$)[^\w\n]*\w.*$Explicación
^ Comienzo de cadena(?!(.)\1+$) Anticipación negativa, afirma no solo los mismos caracteres en la cadena que coincide con al menos 2 caracteres[^\w\n]* Opcionalmente, haga coincidir cualquier carácter excepto un carácter de palabra o una nueva línea\w Coincide con al menos un carácter de una sola palabra.* Opcionalmente coincide con cualquier carácter$ Fin de la cadenaDemostración de expresiones regulares
const regex = /^(?!(.)\1+$)[^\w\n]*\w.*$/; [ "11111111", "1111811111", "rrrrrrrr", "rrrrrrrrrr5", "11111111%", "%$!@$!@@@@", "%%%%%%%%%1", "a" ].forEach(s => { if (regex.test(s)) { console.log(s + " allow") } else { console.log(s + " not allow") } }); Si no desea hacer coincidir ningún espacio en la cadena, puede hacer coincidir caracteres que no sean espacios en blanco usando \S
^(?!(\S)\1+$)[^\w\s]*\w\S*$