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

Return an array of strings after filtering #tags

本文关键字:一个 字符串 数组 返回 过滤      更新时间:2023-09-26

我想知道是否有人能为我提供一个JavaScript RegEx语句来过滤输入框中所有#标签中的文本。

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

示例:输入-#tag1、#tag2、#tag3…

输出:一个[标签1,标签2,标签3…]阵列

提前谢谢。。

简单使用:

/(#'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);

这是一个回答问题的地方,而不是让别人让你编写代码的地方。但我还是会回答的。

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

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

edit:也不包括特殊字符。如果您需要特殊修改,请告诉我,我会很快为您完成:)

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"]