我有下面的字符串模式。
"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');
答案 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
结构。