Разделить число и строку из значения с помощью Java script или регулярного выражения

#javascript #regex #string #numbers

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

Вопрос:

У меня есть значение «4,66фунта»

и я хочу разделить «4.66» и «lb» с помощью регулярного выражения.

Я попробовал приведенный ниже код, но он разделяет только число «4,66»!! но мне нужны оба значения 4.66 и lb.

 var text = "4.66lb";
var regex = /(d )/g;
alert(text.match(/(d )/g));
 

Комментарии:

1. Вы пробовали добавлять ([a-z] ) ?

Ответ №1:

Попробуйте с:

 var res = text.match(/(d (?:.d )?)(D )/);
 

res[1] содержит 4.66
res[2] содержит lb

Для того, чтобы соответствовать также 4/5lb , вы могли бы использовать:

 var res = text.match(/(d (?:[./]d )?)(D )/);
 

Комментарии:

1. Коротко и сладко, 1. 🙂

2. Эй, у меня есть еще один сценарий, в котором число может быть 4/5 фунтов, поэтому в этом случае мне нужно разделить 4/5 и lb….so каким будет регулярное выражение для этого?

3. @user3770003: замените точку косой чертой: /(d (?:/d )?)(D )/

Ответ №2:

Вы также можете использовать символьный класс,

 > var res = text.match(/([0-9.] )(w )/);
undefined
> res[1]
'4.66'
> res[2]
'lb'
 

Ответ №3:

Позвольте мне объяснить на примере

 var str = ' 1 ab 2 bc 4 dd';   //sample string

str.split(/s d s /)
result_1 = ["", "ab", "bc", "dd"]  //regex not enclosed in parenthesis () will split string on the basis of match expression

str.split(/(s d s )/)        //regex enclosed in parenthesis () along with above results, it also finds all matching strings
result_2 = ["", " 1 ", "ab", " 2 ", "bc", " 4 ", "dd"] 

//here we received two type of results: result_1 (split of string based on regex) and those matching the regex itself

//Yours case is the second one
//enclose the desired regex in parenthesis
solution : str.split(/(d .*d [^D])/)