2013-11-14 3 views
1

Как извлечь номера из строки с помощью Javascript? Тестовые ниже:Как извлечь номера из строки с помощью Javascript?

string s = 1AA11111 
string s1= 2111CA2 

string s result = 111111 
string s1 result = 211112 

Мой код ниже не работает:

var j = 0; 
var startPlateNums = ""; 
while (j <= iStartLength && !isNaN(iStartNumber.substring(j, j + 1))){ 
      startPlateNums = startPlateNums + iStartNumber.substring(j, j + 1); 
      j++; 
} 
+1

Что такое 'iStartLength', инициализированный? Кроме того, что такое 'iStartNumber'? – karthikr

+0

Ваш цикл 'while' будет разорваться, как только встретится не число (' isNaN' станет 'true'). Глядя на ваш образец ввода и вывода, это не то, что вы хотите. Вероятно, вы хотите переместить это условие в блок 'if' внутри вашего цикла. –

ответ

4

Как насчет простого регулярного выражения

s.replace(/[^\d]/g, '') 

или как указано в комментариях

s.replace(/\D/g, '') 

http://jsfiddle.net/2mguE/

+0

черт возьми, вы были быстрее –

+1

Я собирался опубликовать '/ \ D/g'. Сохраняет 1 символ! –

+0

Я забыл о '\ D' – Musa

2

Вы можете сделать: Редакцией:

var num = "123asas2342a".match(/[\d]+/g) 
console.log(num); 
// THIS SHOULD PRINT ["123","2342"] 
+1

Это не удастся для чисел, которые появляются после нечисловых символов. – plalx

+1

Для этого потребуется глобальный флаг: «123asas2342a» .match (/ \ d +/g) # => ["123", "2342"] ', но +1 для соответствия, а не просто замена всего, что не является числом с пустая строка '' '' – tombruijn

+0

Спасибо за отзыв @plalx –

1

Регулярное выражение заменить, вероятно, самый простой и эффективный способ сделать это:

'2111CA2'.replace(/\D/g, ''); 

Однако вот еще одна альтернатива без использования регулярных выражений :

var s = [].filter.call('2111CA2', function (char) { 
    return !isNaN(+char); 
}).join(''); 

Или с простой петлей:

var input = '2111CA2', 
    i = 0, 
    len = input.length, 
    nums = [], 
    num; 

for (; i < len; i++) { 
    num = +input[i]; 
    !isNaN(num) && nums.push(num); 
} 

console.log(nums.join('')); 
Смежные вопросы