jquery找到单词的一部分并更改为完整的单词

时间:2016-03-03 12:18:44

标签: jquery

我有一个我想要的文本框替换匹配的单词。

例如:查找@jo@j@jos =更改为@josh

我试过了:

$( document ).on( "click", ".addname", function() {

var user= $(this).attr('title');
var word='/@'+user+'(\w+)/ig'; // REGEX - eg: find @j

var comment=$("#comment").val();
var p = comment.match(word);

alert(p);

var username= $(this).attr('data-id');
$("#comment").val($("#comment").val().replace(p, username));

});

HTML:

<textarea id='comment'>this is a test - @j and @ma</textarea>

<br><br>
<span class='addname' title="j" data-id=josh>josh</span>
<br><br>
<span class='addname' title="ma" data-id=marie>marie</span>

var p为空......出了什么问题?

https://jsfiddle.net/b8skny1t/

3 个答案:

答案 0 :(得分:3)

是否有必要使用“正则表达式”? 你可以使用

var word='@'+user;

答案 1 :(得分:1)

我认为你需要使用RegxP来添加动态正则表达式,

$(document).on("click", ".addname", function() {
  var user = $(this).attr('title');
  var word = '@' + user; // REGEX - eg: find @j
  var rx = new RegExp(word, 'ig');
  var comment = $("#comment").val();
  var p = comment.match(rx);
  var username = $(this).attr('data-id');
  $("#comment").val($("#comment").val().replace(p, username));

});

Fiddle

答案 2 :(得分:1)

因为你正在使用正则表达式。

尝试这样的事情:

$( document ).on( "click", ".addname", function() {

var user= $(this).attr('title');
var comment=$("#comment").val();
var re = new RegExp("^@"+user, "i");
var match = re.test(comment);
if(match){
var username= $(this).attr('data-id');
$("#comment").val($("#comment").val().replace(comment, username));
}
});