0

我有一个文本框,当用户点击空格时,我希望每个单词都有一个 # 前缀。

到目前为止,我拥有的代码是:

  tagsNow = document.getElementById("tags").value;
  tagsChanged = tagsNow.replace(/(w+)/, "#$1");
  document.getElementById("tags").value = tagsChanged;

它部分有效,因为 # 是第一次添加的(word变为#word)。

但是,如果键入了另一个单词,则 # 将添加到文本框的开头,如果用户键入自己的 #,它还会添加另一个 #。

我该如何解决这两个问题?

谢谢

4

2 回答 2

1
function tagify(str){
  return str.replace(/([^#]+?)(\s+|\b)/g, function(mat, grp1, grp2, at, src){
    return src[at-1] == "#" ? mat : "#" + mat;
  });
}

tagify("japan travel"); // "#japan #travel"
tagify("#torii bird");  // "#torii #bird"
tagify("C C#");         // "#C #C#"
于 2012-11-18T07:23:26.427 回答
0

我会想象这样的事情会起作用:

tagsChanged = tagsNow.replace(/(^| )(?=!#)/g,"$1#");

#这基本上搜索后面没有的空格(和字符串的开头) ,然后插入#.

于 2012-11-17T01:40:16.303 回答