Si j'ai une chaîne comme "something12" ou "something102", comment utiliserais-je une expression régulière en javascript pour renvoyer uniquement les parties numériques?
javascript
regex
Malcolm
la source
la source
d
, alors.match(/\d+/g)
parseInt('987d98sf79s7f9s8f9sf'.match(/\d+/gi).join(''))
Vous pouvez également supprimer tous les caractères non numériques (
\D
ou[^0-9]
):la source
Pour les nombres avec fraction décimale et signe moins, j'utilise cet extrait de code:
Mise à jour: - 7/9/2018
Nous avons trouvé un outil qui vous permet de modifier visuellement des expressions régulières: JavaScript Regular Expression Parser & Visualizer .
Mettre à jour:
En voici un autre avec lequel vous pouvez même déboguer une expression régulière: Testeur et débogueur de regex en ligne .
Mettre à jour:
Un autre: RegExr .
Mettre à jour:
Regexper et Regex Pal .
la source
Si vous ne voulez que des chiffres:
Maintenant vous obtenez les chiffres joints
la source
Je suppose que vous voulez obtenir le (s) nombre (s) de la chaîne. Dans ce cas, vous pouvez utiliser les éléments suivants:
la source
get_numbers/1
renvoie un tableau de chaîne, pas un nombre. Pour votre exemple, il renverrait: *["102"]
*["102", "12"]
* nullLes réponses données ne correspondent pas réellement à votre question, ce qui impliquait un numéro de fin . Souvenez-vous également que vous récupérez une chaîne; si vous avez réellement besoin d' un nombre, lancez le résultat:
Si vous avez affaire à des identifiants d'éléments numériques sur une page Web, votre code pourrait également accepter utilement an
Element
, en extrayant le numéro de sonid
(ou de son premier parent avec unid
); si vous en avez un àEvent
portée de main, vous pouvez probablement l'obtenirElement
aussi.la source
la source
OMI, la réponse n ° 3 à l'heure actuelle par Chen Dachao est la bonne voie à suivre si vous souhaitez capturer n'importe quel type de nombre, mais l'expression régulière peut être raccourcie à partir de:
à:
Par exemple, ce code:
génère ce tableau:
J'ai massacré un exemple de gradient linéaire MDN afin qu'il teste complètement l'expression rationnelle et n'ait pas besoin de faire défiler ici. Je pense avoir inclus toutes les possibilités en termes de nombres négatifs, décimales, suffixes d'unité comme deg et%, utilisation incohérente de virgule et d'espace, et les caractères supplémentaires point / point et tiret / tiret dans le texte "lin-grad.ient ". S'il vous plaît laissez-moi savoir si je manque quelque chose. La seule chose que je peux voir qu'il ne gère pas est un nombre décimal mal formé comme "0..8".
Si vous voulez vraiment un tableau de nombres, vous pouvez convertir le tableau entier dans la même ligne de code:
Mon code particulier, qui analyse les fonctions CSS, n'a pas besoin de s'inquiéter de l'utilisation non numérique du caractère point / point, donc l'expression régulière peut être encore plus simple:
la source
Utilisation de split et regex:
la source
Selon la réponse de @ Syntle, si vous n'avez que des caractères non numériques, vous obtiendrez un
Uncaught TypeError: Cannot read property 'join' of null
.Cela évitera les erreurs si aucune correspondance n'est trouvée et renvoie une chaîne vide:
('something'.match( /\d+/g )||[]).join('')
la source
Si vous voulez également des nombres séparés par des points / virgules, alors:
ou
Vous pouvez utiliser https://regex101.com/ pour tester vos expressions régulières.
la source
Tout ce que les autres solutions ont, mais avec un peu de validation
la source