我有一个我想要的文本框替换匹配的单词。
例如:查找@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
为空......出了什么问题?
答案 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));
});
答案 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));
}
});