我正在尝试更新textarea中的子字符串。基本上,它的推特就像@username一样。用户将输入@user,我必须用用户选择的用户名替换“@user ..”。
字符串:
您好,这是test@gmail.com和@gma
在上面的字符串中,焦点位于字符串i的末尾,在@gma之后。 我想用我选择的子串替换@gma。不知何故,我无法做到。 当我使用
this.value = this.value.replace("@gma"+"", "ReplaceText") + ' ';
替换了test@gmail.com的@gma。如何更改最近输入的@gma?
我可以获得插入位置,但无法替换所需的子字符串。
任何帮助都将不胜感激。
答案 0 :(得分:1)
您需要使用RegEx而不是普通字符串进行替换。
this.value = this.value.replace(new RegExp("@gma$","g"), "ReplaceText") + ' ';
重要的部分是$
符号,这意味着只在字符串的末尾搜索@gma
。如果要在最后@
个符号后替换任何字母数字字符串:
this.value = this.value.replace(
new RegExp("@[A-Za-z0-9]+$","g"),
"ReplaceText")
+ ' ';
答案 1 :(得分:1)
如果您知道用户名始终位于字符串的末尾,则可以使用字符串匹配$
的正则表达式结尾:
value = "Hello this is test@gmail.com and @gma";
var re = new RegExp("@[a-zA-Z_0-9]+$");
value = value.replace(re, 'Replace Text');
console.log(value);
// => "Hello this is test@gmail.com and Replace Text"
允许Twitter用户名包含字母,数字和下划线。