Si tengo una cadena como "something12" o "something102", ¿cómo usaría una expresión regular en javascript para devolver solo las partes numéricas?
javascript
regex
Malcolm
fuente
fuente
d
, así que.match(/\d+/g)
parseInt('987d98sf79s7f9s8f9sf'.match(/\d+/gi).join(''))
También puede quitar todos los caracteres que no sean dígitos (
\D
o[^0-9]
):fuente
Para el número con fracción decimal y signo menos, uso este fragmento:
Actualización: - 7/9/2018
Encontró una herramienta que le permite editar visualmente la expresión regular: JavaScript Regular Expression Parser & Visualizer .
Actualizar:
Aquí hay otro con el que incluso puede depurar regexp: probador y depurador de expresiones regulares en línea .
Actualizar:
Otro: RegExr .
Actualizar:
Regexper y Regex Pal .
fuente
Si solo quieres dígitos:
Ahora tienes los dígitos unidos
fuente
Supongo que quieres obtener números de la cadena. En cuyo caso, puede usar lo siguiente:
fuente
get_numbers/1
devuelve una matriz de cadena, no un número. Para su ejemplo, devolvería: *["102"]
*["102", "12"]
* nuloLas respuestas dadas en realidad no coinciden con su pregunta, lo que implica un número final . Además, recuerde que está recuperando una cadena; si realmente necesita un número, arroje el resultado:
Si se trata de identificadores numéricos de elementos en una página web, su código también podría aceptar un
Element
, extrayendo el número de suid
(o su primer padre con unid
); si tienes unEvent
práctico, es probable que también puedas obtenerloElement
.fuente
fuente
En mi opinión, la respuesta n. ° 3 de Chen Dachao en este momento es el camino correcto si desea capturar cualquier tipo de número, pero la expresión regular se puede acortar de:
a:
Por ejemplo, este código:
genera esta matriz:
He descifrado un ejemplo de gradiente lineal MDN para que pruebe completamente la expresión regular y no necesite desplazarse aquí. Creo que he incluido todas las posibilidades en términos de números negativos, decimales, sufijos de unidades como deg y%, coma incoherente y uso del espacio, y los caracteres adicionales de punto / punto y guión / guión dentro del texto "lin-grad.ient ". Por favor, avíseme si me falta algo. Lo único que puedo ver que no maneja es un número decimal mal formado como "0..8".
Si realmente desea una matriz de números, puede convertir la matriz completa en la misma línea de código:
Mi código particular, que analiza las funciones CSS, no necesita preocuparse por el uso no numérico del carácter punto / punto, por lo que la expresión regular puede ser aún más simple:
fuente
Usando split y regex:
fuente
Según la respuesta de @ Syntle, si solo tiene caracteres no numéricos, obtendrá un
Uncaught TypeError: Cannot read property 'join' of null
.Esto evitará errores si no se encuentran coincidencias y devolverá una cadena vacía:
('something'.match( /\d+/g )||[]).join('')
fuente
Si también desea números separados por puntos / comas, entonces:
o
Puede usar https://regex101.com/ para probar sus expresiones regulares.
fuente
Todo lo que tienen otras soluciones, pero con un poco de validación.
fuente