在Javascript中的字符串中突出显示我的“@users'名称”

时间:2014-03-04 13:32:17

标签: javascript regex

我试图在用@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​​”将无效。

3 个答案:

答案 0 :(得分:1)

你需要逃避你的反斜杠。此外,你还应该添加1美元和3美元,否则你放弃你的空格。使用g标志进行多次替换

http://jsfiddle.net/7h8Aq/

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');   
}