Necesito hacer coincidir esto como:
1. 1234 true 2. 1234 5678 false 3. 1234x true 4. x1234 true 5. abcd false 6. abcd 1234 falseasí que necesito hacer coincidir solo una cadena con solo números o solo números y caracteres y sin espacios (una sola palabra). Esto realmente no funciona:
/([0-9])\w+/gSu patrón ([0-9])\w+ no está anclado, por lo que puede tener coincidencias parciales.
También debe comenzar con un dígito y al menos 1 carácter de palabra, y la cadena debe tener al menos 2 caracteres de longitud.
Puede usar anclas y asegurarse de hacer coincidir un solo dígito. Solo para una coincidencia, puede omitir el grupo de captura:
^[^\W\d]*\d\w*$^ Comienzo de cadena[^\W\d]* Opcionalmente coincide con cualquier carácter de palabra excepto un dígito\d Coincide con un solo dígito\w* Coincidir con caracteres de palabras opcionales$ Fin de la cadenaDemostración de expresiones regulares
Tenga en cuenta que \w también puede coincidir con _
Haga coincidir toda la cadena y requiera al menos un dígito:
/^[az]*[0-9][a-z0-9]*$/i Ver prueba de expresiones regulares . Importante : i flag (no distingue entre mayúsculas y minúsculas).
EXPLICACIÓN
-------------------------------------------------------------------------------- ^ the beginning of the string -------------------------------------------------------------------------------- [az]* any character of: 'a' to 'z', 'A' to 'Z' (0 or more times (matching the most amount possible)) -------------------------------------------------------------------------------- [0-9] any character of: '0' to '9' -------------------------------------------------------------------------------- [a-z0-9]* any character of: 'a' to 'z', 'A' to 'Z', '0' to '9' (0 or more times (matching the most amount possible)) -------------------------------------------------------------------------------- $ the end of the string const strings = ['1234','12x3', '12 X']; console.log(strings.filter(string=> string.match(/^[0-9a-z]+$/i)));