通过给出起点和终点来替换字符串中的单词仅替换第一个匹配项

时间:2015-11-03 08:54:19

标签: javascript regex replace

这是我的代码

var str = 'test test';              
var start = 5;               
var end = 9;                
var val = 'success';                 
var ta1 = $("#textbox").val();        
$("#textbox").val(ta1.replace(ta1.substr(start,end),val));               

其输出为= success test

但是我想给出起点和终点来替换字符串中的第二个测试单词。我该怎么做 ?

也许还有一些替代方案可供选择?

1 个答案:

答案 0 :(得分:0)

您可以检查回调函数中的偏移量:



var start = 9;               
var end = 16;                
var val = 'success';                 
var ta1 = $("#textbox").val();
rx = RegExp(ta1.substr(start,end - start), "g"); // RegExp is formed with global flag to test all matches
console.log(rx);
$("#textbox").val(ta1.replace(rx, function(m, offset, input) {
    var result = offset === start ? val : m;  // Here, we check if the offset is our start position
    return result;
 }));

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="textbox" rows="20">this
is 
testing
test</textarea>
&#13;
&#13;
&#13;

所以,基本上,你需要:

  • 使用substr函数
  • 获取替换字符串
  • 使用构造函数
  • 创建全局RegExp对象
  • 在替换内部,定义回调函数以检查起始偏移量,如果偏移量等于 start 变量值,则执行替换。