【问题标题】:Javascript Regex: How can I surround all words starting with @ with <b> tags?Javascript Regex:如何用 <b> 标签包围所有以 @ 开头的单词?
【发布时间】:2009-07-25 01:09:05
【问题描述】:

我想用 javascript 正则表达式将所有以@ 开头的单词和&lt;b&gt; 标签括起来。我会使用什么模式?

【问题讨论】:

  • 样本数据和预期结果?
  • 考虑到 已被弃用,您可能想尝试
  • codinghorror.com/blog/archives/001285.html。它有点相关,但正确地指出它并不像最初看起来那么简单。
  • 单词是否定义为数字和字母?还是空白或换行符以外的字符?基本上你已经告诉我们你的起点,但你的终点是什么?据我所知, 标签没有贬值,使用标签进行样式化是贬值的。我相信 在“多么大胆的声明”的意义上被认为是“粗体”,并且浏览器默认使用加粗文本。但是,如果这不是您打算使用 标记来表示的,那么您应该使用 甚至可能是
    标记。
  • 哦,抱歉,您当然希望将它们包装在 标记中。单独的 span 标签不会真正告诉浏览器任何事情。

标签: javascript regex


【解决方案1】:
var sample = "@sample";
sample = sample.replace(/(^|\s|-)+@(\w+)/g, "<b>$&</b>");
//^^that's assuming you want the @ to stay
//if not, use $2 instead of $&

$&amp; 插入匹配的子字符串。

使用函数:

var sample = "@sample";
sample = sample.replace(/(^|\s|-)+@(\w+)/g, function(str) {
    return "<b>"+str+"</b>";
}

当您想要获得更大或更精细的控制时,使用函数是一个好主意。您可能想要处理当前匹配的部分。随心所欲。

查看更多here at MDC

【讨论】:

  • 现在我真的不知道\w+ 是否会匹配您想要的字符串,但如果您遇到正则表达式问题,那么这适合另一个问题。
  • 另外,在正则表达式后面加上一个“g”以匹配所有出现,例如:/@\w+/g
  • 是的,我似乎在你评论的时候意识到了这一点。谢谢
【解决方案2】:

George 的示例将匹配 @ 之后的所有内容,包括 some@email.com。 试试:

function BoldMyText(text) {
    var words = text.split(" ");
    var returnText = '';

    for(var i=0;i<words.length;i++) {
         word = words[i].replace(/^@(\w+)/, '<b>$1</b>');
         returnText += ' ' + word;
    }

    return returnText;
}

var myBoldedText = BoldMyText("You should @not bold my@email.com");

如果不是你想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    相关资源
    最近更新 更多