#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])/)