.match()
硬编码的javascript方法允许您在匹配的模式之间进行选择,如下所示:.match()[number]
仅当您的g
中有regex
修饰符时才更正
有没有办法为.replace()
方法做同样的工作?
喜欢 :
.replace(/pattern/g,'myText')[number]
循环找到或匹配的'结果并选择其中一个特定的改变?
或任何为此任务存在的jquery插件
为了更好地理解我的观念,这里有一个jsfiddle DEMO
答案 0 :(得分:2)
这不是开箱即用的,你需要这样的功能:
String.prototype.replacen = function(re, replace, n) {
var p = 0;
return this.replace(re, function($0) { return p++ == n ? replace : $0 })
}
像这样工作
"abcdef".replacen(/[a-z]/g, "*", 3) // "abc*ef"
答案 1 :(得分:1)
解决这个问题的一种方法是自己跟踪比赛:
$('button').click(function () {
// first, make sure we have a number (not a string):
var v = parseInt($('input').val(), 10),
// create a variable to keep track of 'which' match:
matchNumber = 0;
// use the anonymous function available to String.replace():
result = $('p').text().replace(/12/g, function (a){
// increment the matchNumber variable (because we're returning in the
// next line):
matchNumber++;
// check to see if matchNumber - 1 (the 'pre-incremented' matchNumber) is
// equal to the match we want. If it is, we return the specified string ('aa'),
// otherwise we return the matched string (the variable `a`):
return (matchNumber - 1) === v ? 'aa' : a;
})
$('div').text(result)
})
参考文献: