如何在使用Javascript的连字符分隔的两个数字的开头追加

时间:2017-03-08 12:43:43

标签: javascript regex node.js

我有一个字符串:'100 - 250'

我想将英镑符号附加到每个数字的开头,因此它变为:

£100 - £250

使用Javascript进行此操作的最佳方式是什么?

我尝试使用正则表达式/[0-9]/来识别数字,然后我会添加英镑符号并重新创建我的字符串。但是这个正则表达式标识了各个数字,因此在'100 - 250'执行此正则表达式时,我回来了[1, 0...]

5 个答案:

答案 0 :(得分:2)

这是一种方法:



var str = "100 - 250";
str = str.replace(/(?=\b\d+\b)/g, '£');
console.log(str);




答案 1 :(得分:2)

试试这个。

var regex = /(\d+)(\s*\-\s*)(\d+)/,
    myString = '100 - 250';

myString.replace(regex, "£$1$2£$3");

答案 2 :(得分:1)

漂亮的单行

str.match(/\d+/g).map(function(num) { return "£"+num; }).join(" - ");

答案 3 :(得分:1)

var str = "100 - 250";
var arr = str.match(/\d+/g);
arr.forEach(function(item, index, ar){ar[index] = "$"+item;});
console.log("output - "+arr.join(" - "));

答案 4 :(得分:1)

您的解决方案几乎完成,以防您只需要处理整数值。

为了在数字开头处的每个数字前添加一个英镑符号

str = str.replace(/\b[0-9]/g, '£$&');
                   ^^           ^^

也就是说,您需要一个字边界\b)以及替换模式中对整个匹配($&)的反向引用。

请注意,/g修饰符会使多次替换,如果字符串中有多个匹配项。



var str = "100 - 200";
str = str.replace(/\b[0-9]/g, '£$&');
console.log(str);




整数和浮动的奖金解决方案



var str = "100 - 200 - 550.55";
str = str.replace(/(^|[^.])\b([0-9])/g, '$1£$2');
// or
// str = str.replace(/\d*\.?\d+/g, '£$&');
console.log(str);