我有一个字符串:'100 - 250'
我想将英镑符号附加到每个数字的开头,因此它变为:
£100 - £250
使用Javascript进行此操作的最佳方式是什么?
我尝试使用正则表达式/[0-9]/
来识别数字,然后我会添加英镑符号并重新创建我的字符串。但是这个正则表达式标识了各个数字,因此在'100 - 250'
执行此正则表达式时,我回来了[1, 0...]
。
答案 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);