Jak filtrować tylko liczby znaków?Liczba filtrów JQuery ciągu znaków
Example Pseudo Code:
number = $("thumb32").filternumbers()
number = 32
Jak filtrować tylko liczby znaków?Liczba filtrów JQuery ciągu znaków
Example Pseudo Code:
number = $("thumb32").filternumbers()
number = 32
Nie trzeba jQuery do tego - po prostu stary JavaScript regex replacement
var number = yourstring.replace(/[^0-9]/g, '')
Pozwoli to pozbyć się wszystkiego, co nie jest [0-9]
Edycja: Oto mała funkcja aby wyodrębnić wszystkie liczby (jako rzeczywiste liczby) z ciągu wejściowego. Nie jest to wyczerpująca ekspresja, ale będzie dobrym początkiem dla każdego, kto potrzebuje.
function getNumbers(inputString){
var regex=/\d+\.\d+|\.\d+|\d+/g,
results = [],
n;
while(n = regex.exec(inputString)) {
results.push(parseFloat(n[0]));
}
return results;
}
var data = "123.45,34 and 57. Maybe add a 45.824 with 0.32 and .56"
console.log(getNumbers(data));
// [123.45, 34, 57, 45.824, 0.32, 0.56];
Dlaczego regex jest taki trudny? Wygląda tak obco, a mój mózg wydaje się natychmiast wyłączony, ponieważ jest bardzo przytłoczony przez wiele znaków interpunkcyjnych ... i symboli, jeśli nie znam ich znaczenia, ale wiem, że coś znaczą ... Dlaczego muszę patrz za każdym razem? Informacje po prostu nie wbijają się w moją głowę, bez względu na ... –
^Witamy w klubie. –
Witaj. Ale dla liczby jak 12,5, 20,3. Wracają 125 i 203? –
Niezupełnie jQuery w ogóle:
number = number.replace(/\D/g, '');
To wyrażenie regularne, /\D/g
, pasuje do każdego non-cyfrowy kod. W ten sposób wywołanie .replace()
zastępuje wszystkie nie będące cyframi (wszystkie, dzięki "g") pustym ciągiem.
edit — jeśli chcesz rzeczywistej * liczba wartości, można użyć parseInt()
po usunięciu non-cyfr z ciągu znaków:
var number = "number32"; // a string
number = number.replace(/\D/g, ''); // a string of only digits, or the empty string
number = parseInt(number, 10); // now it's a numeric value
Jeśli oryginalny ciąg może mieć żadnych cyfr w ogóle , dostaniesz numeryczną wartość inną niż NaN
od parseInt
w takim przypadku, która może być równie dobra jak cokolwiek innego.
Czy możesz podać przykładowe dane? dkwlj-32-fjkij-ff0-33? – sunn0
Proszę przeczytać FAQ: http://stackoverflow.com/faq Pytania powinny być * pytania *. Im więcej wysiłku włożysz w swoje pytanie, tym lepsza będzie jakość i ilość odpowiedzi, które otrzymasz w ostatnim czasie (i większy szacunek dla miejsca, które pokazujesz). –