$("#idofreplybox").on('keyup, keydown',function(){
var e = $(this).html();
if (e.indexOf(@) !== -1){}else{
var d = find all occurences of @
var f = find the next whitespace after that @
change the text between var d and var f to blue
}
});
使用此代码,当某人键入@steve
时,他们的名字应该变为蓝色。但是我不确定我需要将我的代码块中的文本更改为javascript代码的正则表达式。
很抱歉,如果这对你来说很明显,但我是一个正常的表达菜鸟,所以我无法解决我需要写的东西。
任何帮助都将不胜感激。
答案 0 :(得分:1)
使用\b
作为字边界。
例如:
"test @username bla bla".replace(/@(\w+)\b/g, "<span class=user>$1</span>")
给出
"test <span class=user>username</span> bla bla"
答案 1 :(得分:1)
使用@ dystroy的正则表达式:
(function($){
$("#idofreplybox").keyup(function(){
var e = $(this).html();
if (e.length && /@(\w+)\b/.test(e)){
e = e.replace(/@(\w+)\b/g, '<span style="color: blue;">$1</span>');
$(this).html(e);
} else {
}
});}
)(jQuery);
但请注意,您无法在文本框中使用html,使用内容可编辑元素或代理/虚拟,它将充当文本框并将内容/ html复制到div。
$ 1表示第一个paranthesis()匹配,$ 2表示第二个,依此类推