2015-09-14 3 views
0

Я хочу создать функцию, которая получает все номера из string.Ex:RegExp `match` вопрос

inputString: "Hello 2.15 digital World 5,3" 

должен возвращать: [2.15, 5, 3]

Моя функция заключается в следующем:

function task02(inputString) { 
    var reg = /^(\d+)(\.*)(\d+)$/; 
    return inputString.match(reg); 
} 

Как-то он возвращает null все время. Я не могу это получить. RegExp был создан с использованием regex101.com. Помощь будет высоко оценена.

+0

Почему вы используете '^' и '$'? Вы знаете, что они означают? И как вы ожидаете, что он будет соответствовать отдельным цифрам, например. '5' и' 3'? – Biffen

+0

Я думал о '(\. *)' Как необязательном способе размещения точки. Я совершенно новый для Regex. –

+0

'\. *' Означает ноль или более '.' S. Но даже если оно равно нулю, '\ d +' s с каждой стороны означает, что это должно быть как минимум две цифры. Как насчет чтения учебника? – Biffen

ответ

2

Вы должны использовать регулярное выражение /(\d+)(?:\.\d+)?/g

function task02(inputString) { 
 
    var reg = /(\d+)(?:\.\d+)?/g; 
 
    return inputString.match(reg); 
 
} 
 

 
console.log(task02("Hello 2.15 digital World 5,3"));

Regex объяснение:

(\d+)(?:\.\d+)? 

Regular expression visualization

Debuggex Demo

+0

@ АртурКоханский: рад помочь :) –

2

Необходимо удалить анкеры. А также образец для сравнения целое Aswell в виде десятичных чисел должно быть,

var reg = /\d+(?:\.\d+)?/g; 

g модификатор помогает сделать глобальный матч.

DEMO