正则表达式在一个文本块中设置用户名的样式

时间:2011-12-13 00:55:29

标签: javascript jquery regex

正则表达式将在一个范围内包装所有用户名,假设它们以at符号开头?

var strA = '@A ipsum @B'; // Original Text
var strB = '<span>@A</span> ipsum <span>@B</span>'; // After Regex

3 个答案:

答案 0 :(得分:1)

可能是这样的:

/(?:\W|^)(@(\w+))/

Catch group 1包含您的用户名和catch {2,而不包含@

有点笨拙,但是(上次我检查过)Javascript的正则表达式不支持lookbehinds,这是最干净的方法,我会说。

答案 1 :(得分:1)

我去了:

strB = strA.replace(/(@[^\s+])/g, '<span class="hilite">$1</span>');

答案 2 :(得分:0)

我会使用/(^|\s)(@\w+)\b/g

string.replace(/(^|\s)(@\w+)\b/g, "$1<span>$2</span>");

根据用户名中允许的字符数量,可能需要进行一些修改。