2010-03-14 5 views
1

Je ne suis pas habitué à utiliser regexp, quelqu'un peut-il me donner l'expression rationnelle qui supprimera tout sauf un entier d'une chaîne en javascript?Qu'est-ce qu'un bon RegExp qui supprimera tous les caractères sauf les entiers d'une chaîne?

Je voudrais prendre la chaîne "http://www.foo.com/something/1234/somethingelse" et l'obtenir jusqu'à 1234 comme un nombre entier.

Merci

+1

Nombre ou entier? Deux choses différentes ... Si on vous permet des flotteurs, alors vous posez une question différente. – Skilldrick

+0

que devrait-il faire pour "ab12xx34"? – user187291

+1

Est-ce que cela inclut 'hexadecimal',' octal', 'binary',' float', 'integer'? Nous avons besoin d'une description précise s'il vous plaît! Merci. –

Répondre

7
var str = "something 123 foo 432"; 

// Replace all non-digits: 
str = str.replace(/\D/g, ''); 

alert(str); // alerts "123432" 

En réponse à votre question éditée, extraire une chaîne de chiffres à partir d'une chaîne peut être simple, selon que vous souhaitez cibler une zone spécifique de la chaîne ou si vous Je veux simplement extraire la première chaîne de chiffres. Essayez ceci:

var url = "http://www.foo.com/something/1234/somethingelse"; 
var digitMatch = url.match(/\d+/); // matches one or more digits 
alert(digitMatch[0]); // alerts "1234" 

// or: 
var url = "http://x/y/1234/z/456/v/890"; 
var digitMatch = url.match(/\d+/g); // matches one or more digits [global search] 
digitMatch; // => ['1234', '456', '890'] 
+0

Je suis surpris qu'aucune des autres réponses n'ait utilisé le raccourci des chiffres. –

+0

@Damien: Y a-t-il une raison pour laquelle nous devrions avoir? :) – Sampson

+0

J'ai édité ma question pour donner plus de détails – SLoret

1

Ceci est juste pour les entiers:

[0-9]+ 

Le + signifie match de 1 ou plus, et [0-9] signifie correspondre à tout caractère de la gamme 0-9.

0

Définissez simplement une classe de caractères dont les valeurs doivent être des nombres.

/[^0-9]/g // matches anything that is NOT 0-9 (only numbers will remain) 
+0

N'est-ce pas une classe de caractères niée? – Skilldrick

+0

@Skilldrick - Essayez-le en ligne http://www.gskinner.com/RegExr/ – Sampson

+0

Oh, vous remplacez les chiffres par rien, je n'ai pas compris avant le commentaire. – Skilldrick

1
uri = "http://www.foo.com/something/1234/somethingelse"; 
alert(uri.replace(/.+?\/(\d+)\/.+/, "$1")) 
+0

'uri.replace'? Pourquoi? –

+0

pourquoi quoi? ...... – user187291

Questions connexes