正则表达式替换字符串

时间:2014-05-23 09:56:57

标签: javascript regex

我有下面的字符串模式。

"XX0XX XX7XX XX11XX XX26XX XX30XX XX38XX XX45XX **3** 10.1, Belkin Keyboard Folio"

我必须将"3"替换为"XX49XX",其中"XX"没有前缀和后缀

到目前为止,我已经完成了以下代码,它取代了第一次出现的3,这是不正确的

var string = 'XX0XX XX7XX XX11XX XX26XX XX30XX XX38XX XX45XX 3 10.1, Belkin Keyboard Folio';

str = string.replace(/3/, 'XX49XX');

3 个答案:

答案 0 :(得分:2)

您可以使用使用否定前瞻来匹配上一个3

string = string.replace(/3(?!.*3)/, 'XX49XX');

// XX0XX XX7XX XX11XX XX26XX XX30XX XX38XX XX45XX 49 10.1, Belkin Keyboard Folio

答案 1 :(得分:0)

anubhave显示如何匹配数字3的最后一次出现。

您也可以匹配字符串的相关部分。

string.replace(/\b\d+ (\d+\.\d+, Belkin Keyboard Folio)/, 'XX49XX')

这将使用<number> <number>.<number>,Belkin Keyboard Folio

形式替换子字符串中的第一个数字(一个或多个数字)

答案 2 :(得分:0)

虽然JS遗憾地没有观察能力,但你可以使用前瞻:

string.replace(/3(?!\d*XX)/, "XX49XX");

这将确保您获得的3不属于XX##XX结构。