【问题标题】:Return an array of strings after filtering #tags过滤#tags后返回一个字符串数组
【发布时间】:2015-02-09 21:14:37
【问题描述】:

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

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

示例:输入-#​​tag1、#tag2、#tag3...

输出:[tag1, tag2, tag3...] 的数组

提前谢谢..

【问题讨论】:

  • 这是一个简单的任务。您是否在使用已创建的正则表达式时遇到问题?

标签: javascript arrays regex tags


【解决方案1】:

简单使用:

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

【讨论】:

  • @NewUser07 添加了一个简单的映射函数以从结果中删除#。
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:
    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"]

    【讨论】:

    • 如果你觉得有用就投票吧:)
    猜你喜欢
    • 1970-01-01
    • 2017-10-09
    • 2022-11-11
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 2019-04-23
    相关资源
    最近更新 更多