我试图在用@login这样的字符串中检测到用户的用户名。这是似乎不起作用的代码:
function parse(string) {
var regex = new RegExp('(\W|^)@('+username+')(\W|$)', 'i');
return String(string).replace(regex, '<span class="label radius">@$2</span>');
}
这是一个测试它的方法:http://jsfiddle.net/2pmLT/3/
当我输入我的@login时,它突出显示它,但只有当它是字符串中的唯一文本时:“@ login haha”将无效。
答案 0 :(得分:1)
你需要逃避你的反斜杠。此外,你还应该添加1美元和3美元,否则你放弃你的空格。使用g标志进行多次替换
function parse(string) {
var regex = new RegExp('(\\W|^)@('+username+')(\\W|$)', 'ig');
return string.replace(regex, '$1<span class="label radius">@$2</span>$3');
}
答案 1 :(得分:0)
Here ,你只需要替换某些实例,因此没有必要匹配整个字符串,你还需要指定全局g
标志正则表达式:
function parse(text) {
return text.replace(new RegExp('(@' + username + ')', 'g'),
'<span class="label radius">$1</span>');
}
答案 2 :(得分:0)
考虑this example个实例。
<强> HTML 强>
<div id="test-block">
<div class='label'></div>
</div>
<强> JQuery的强>
$('#test').on('keyup', function(e) {
$('.label').text(parse($(this).val()));
});
function parse(myString) {
var find = "(\W|^)@(" + username + ")(\W|$)";
var regex = new RegExp(find, 'i');
return myString.replace(regex, '@$2');
}