如何在没有换行符或空格或标签的情况下找到没有url标签的主题标签?
function findHashtags(searchText) {
var regexp = /\#\w\w+\s?/g
result = searchText.match(regexp);
if (result) {
result.map(function(s) { return s.trim() });
console.log(result);
} else {
return false;
}
}
答案 0 :(得分:11)
使用\b
代替\s?
- 字边界而不是额外的空格来捕获空格。使用\B
(不是单词边界)将您的网址标签与以字符结尾的网址分开。
所以:
function findHashtags(searchText) {
var regexp = /\B\#\w\w+\b/g
result = searchText.match(regexp);
if (result) {
console.log(result);
} else {
return false;
}
}
由此引发的:
findHashtags("http://www.masrawy.com/Sports/Sports_News/details/2014/9/5/338281#HPOFEATURE\n#ss\nddd\n#ddd jaaja ksks #sfsfsf\n#ggdg#hdhhd")
然后返回:
["#ss", "#ddd", "#sfsfsf", "#ggdg", "#hdhhd"]
请注意,如果网址以字符(a-z0-9_
)结尾,则会失败。除此之外唯一的选择是捕获并更有效地修剪空白:
function findHashtags(searchText) {
var regexp = /(\s|^)\#\w\w+\b/gm
result = searchText.match(regexp);
if (result) {
result = result.map(function(s){ return s.trim();});
console.log(result);
return result;
} else {
return false;
}
}
答案 1 :(得分:5)
如果您关心可读性,请执行以下操作:
yourText.split(' ').filter(v=> v.startsWith('#'))
答案 2 :(得分:3)
从字符串中获取hast标记
function getHashTag = function (tagString)
{
var tagListArray = [];
var regexp = new RegExp('#([^\\s]*)', 'g');
var tmplist = tagString.match(regexp);
for (var w in tmplist) {
var hashSub = tmplist[ w ].split('#');
for (var x in hashSub) {
if (hashSub[x] != "")
{
if (hashSub[x].substr(hashSub[x].length - 1) == ":")
{
hashSub[x] = hashSub[x].slice(0, -1);
}
if (hashSub[x] != "") {
tagListArray.push(hashSub[x]);
}
}
}
}
return tagListArray;
}
console.log(getHashTag("#test#logic:main dummytext hello #stack:overflow"))
答案 3 :(得分:1)
将空格匹配放在前瞻中,也可以使用$
"#foo #bar #baz".match(/#[\w]+(?=\s|$)/g); // ["#foo", "#bar", "#baz"]
现在您可以更轻松地修改其余内容(即添加\w
旁边的内容)以匹配任何有效的主题标签
答案 4 :(得分:0)
简单的例子。
caches.keys().then(function(names) {
for (let name of names)
caches.delete(name);
});