过滤#tags后返回一个字符串数组

时间:2015-02-09 21:14:37

标签: javascript arrays regex tags

我想知道是否有人可以提供JavaScript RegEx语句来过滤输入框中所有#tags中的文本。

场景:我有一个用户输入文本框,用户可以在其中输入多个#tags。我想要做的是在删除特殊字符后将所有文本过滤掉并存储在数组中,然后通过循环遍历数组将其保存到数据库中。

示例:输入 - #tag1,#tag2,#tag3 ...

输出:[tag1,tag2,tag3 ...]

的数组

提前致谢..

3 个答案:

答案 0 :(得分:0)

这是一个问题的地方,而不是让你有代码的人。但我仍然会回答。

(\s?#[a-zA-Z0-9]+,?)+

- 由可选的空格和可选逗号分隔 - 确保在返回值的开头和结尾处修剪空白区域(循环时) - 也删除哈希标记(修剪后的第一个字符) - 链接您的示例https://regex101.com/r/rT2aC5/1

编辑:也不包含特殊字符。如果您需要进行特殊修改,请告诉我,我会尽快为您完成:)

答案 1 :(得分:0)

简单地使用:

/(#\w+)+/gmi

在正则表达式匹配列表中,您将拥有数组中的所有标记。此表达式仅支持字母,数字和下划线 - 如果要扩展或限制字符集,只需调整\w

这是一个regex101来玩:https://regex101.com/r/pJ8vA4/2

javascript看起来像:

var string = '#tag1, #tag2, #tag3 some other stuff #tag4';
var tags = string.match(/(#\w+)+/gmi);
tags = result.map(function(tag) { return tag.replace('#', '') });
console.log(tags);

答案 2 :(得分:0)

var input = "#tag1, #tag2, #tag3";
var regex = new RegExp(/#(\w+),?\s?/gi);
var match = null;
var results = [];

while (match = regex.exec(input)){
     results.push(match[1]);
}

这将为您提供一个结果数组:[" tag1"," tag2"," tag3"]