我需要在Javascript中替换字符串的一部分
以下示例应阐明我的意思
var str = "asd[595442/A][30327][0]";
var strToReplace = "30333";
var strDesiredResult = "asd[595442/A][30333][0]";
Run Code Online (Sandbox Code Playgroud)
基本上它意味着括号内的第二个区域应该被另一个字符串替换
怎么做?
到目前为止我做的是这样的:
var str = "asd[595442/A][30327][0]";
var regex = /asd\[(.*)\]\[(.*)\]\[(.*)\]/;
var arrMatches = regex.exec(str);
Run Code Online (Sandbox Code Playgroud)
该字符串正确显示在arrMatches [2]中,我可以替换它.但是如果在arrMatches [1]中是相同的字符串会发生什么?
因为它应该只替换第二个括号区域中的值.
您可以使用正则表达式,将匹配第一个[....],接着与[和捕捉部分成团(即你将能够通过反向引用来引用),然后匹配1+字符以外的]与您的替换替换它们:
var str = "asd[595442/A][30327][0]";
var strToReplace = "30333";
console.log(str.replace(/(\[[^\]]*]\[)[^\]]*/, "$1" + strToReplace));
var strDesiredResult = "asd[595442/A][30333][0]";
console.log(strDesiredResult);Run Code Online (Sandbox Code Playgroud)
在/(\[[^\]]*]\[)[^\]]*/还没有g修改,它会寻找一个只匹配.
由于正则表达式引擎从左到右搜索字符串以进行匹配,因此您将从左侧获得第一个匹配项.
本\[[^\]]*]\[场比赛[,那么任何 0+比其他字符],然后][.该(...)形式捕获组#1,它会记住,你将能够获得与替换值$1反向引用.[^\]]*匹配除了以外的0+字符],这将被替换.
细节:
(- 捕获组开始
)- 捕获组#1结束(可以使用替换模式的$1 反向引用访问其值)[^\]]*- 0+(因为*量词匹配零次或多次出现,+如果你只需匹配有1次或多次出现的地方,则替换)除了以外的字符](在JS正则表达式中的字符类内,]必须在任何位置进行转义).| 归档时间: |
|
| 查看次数: |
13686 次 |
| 最近记录: |