0

我正在尝试使用正则表达式在某些字符串的开头添加一个字符,但对它很陌生,似乎无法找到我正在寻找的答案。我有类似Below 1499and的字符串Above 1900,我想$在数字字符串的开头添加 a 。这是我必须找到的代码(顺便说一句,这些都是 div 中的所有文本字符,具有一个细化_price_text 类):

$('.refinement_price_text').each(function(){
    console.log($(this).text().match(/\d{1,5}/g));
});

它将它们很好地记录到控制台。它们被记录为包含一项的数组。不过,我现在不知道如何在他们前面加上美元符号。我已经尝试过 prepend() 但这不起作用。我试图将 match() 设置为变量,但这不起作用。我最初想使用 replace() 但我需要在那里维护当前值,只需将美元符号字符添加到开头,我不知道 $(this) 对于正则表达式的等价物是什么,以便保持相同的值。

让我知道这是否有意义。我确定必须有一个功能可以轻松做到这一点?谢谢你的帮助!

4

2 回答 2

2

我相信这可以处理所有可能性:

"111 Above 1499 and below 14930 and $100".replace(/([^$]|^)(\b\d+)/g, "$1$$$2")
> "$111 Above $1499 and below $14930 and $100"

要替换 Jquery 中的文本:

$(this).text(function(i, t) { return t.replace(...above stuff...) })

http://jsfiddle.net/k7XJw/1/

忽略数字是括号,

str = "111 Above 1499 and below 14930(55) and $100 and (1234) and (here 123) and (123 there)"
str.replace(/([^$(]|^)(\b\d+\b)(?!\))/g, "$1$$$2")
> "$111 Above $1499 and below $14930(55) and $100 and (1234) and (here 123) and (123 there)"
于 2013-10-01T18:17:10.463 回答
0

对于像您发布的前瞻正则表达式和替换这样的简单字符串将起作用。基本上告诉正则表达式在字符串中找到第一个数字(但不要使用它),然后在前面加上一个美元符号。对于同一字符串中的多个数字,您将不得不调整正则表达式。

var s = "before 1900"
s=s.replace(/(?=[0-9])/,"$");
console.log(s);

修改为支持多次出现。它查找前面有空格的任何数字,然后在该数字前面加上美元符号。

Plunker 示例

var s = "before 1900 and 2130 and (1900)"
s=s.replace(/\s(?=\d)/g," $");
console.log(s);
于 2013-10-01T18:23:15.360 回答