La tarea es excluir el valor si uno contiene : . El valor también debe incluir al menos 1 carácter de palabra.
los valores de cadena coincidentes son:
' h-73 \r\n\t' ' hey' 'hi ' '7'los valores no coincidentes son:
' \r\n\t' // neither letter not digit ' ' // neither letter not digit ' sds: \r\n\t' // : Para excluir : usaría /^[^:]+$/ para filtrar los caracteres de las palabras que usaría /\w+/ .
No tengo idea de cómo usarlos juntos en la misma expresión regular porque el alcance de cada condición debe ser una cadena completa.
La expresión regular que coincide con sus especificaciones es
/^[^\w:]*\w[^:]*$/Detalles :
^ - comienzo de la cadena[^\w:]* - cero o más caracteres que no sean palabra y : caracteres\w - carácter de una palabra[^:]* - cualquier carácter, cero o más ocurrencias, excepto dos puntos$ - final de la cadena.demostración de JavaScript:
const texts = [' h-73 \r\n\t',' hey','hi ','7',' \r\n\t',' ',' sds: \r\n\t']; const re = /^[^\w:]*\w[^:]*$/; for (const text of texts) { console.log("'"+text+"'", '=>', re.test(text)); } NOTA : También podría usar /^[^:]*\w[^:]*$/ , pero esta expresión regular toma los dos puntos del comienzo de la cadena tantas veces como sea posible y luego retrocede para encontrar una palabra char, que es menos eficiente. Entonces, el \w en la primera clase de carácter negado es bienvenido.