我有一个文本框,当用户点击空格时,我希望每个单词都有一个#prepended。
到目前为止,我的代码是:
tagsNow = document.getElementById("tags").value;
tagsChanged = tagsNow.replace(/(w+)/, "#$1");
document.getElementById("tags").value = tagsChanged;
它部分有效,因为#在第一次(word
变为#word
)时会被添加。
但是,如果键入了另一个单词,则只在文本框的开头添加#,如果用户键入自己的#,它还会添加另一个#。
我怎样才能解决这两个问题?
由于
答案 0 :(得分: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#"
答案 1 :(得分:0)
我会想象这样的事情会起作用:
tagsChanged = tagsNow.replace(/(^| )(?=!#)/g,"$1#");
这基本上会搜索后面没有#
的空格(以及字符串的开头),并插入#
。