【问题标题】:Filter entries in array过滤数组中的条目
【发布时间】:2016-06-17 13:16:22
【问题描述】:

我有一个包含以下条目的数组:

abc / def
abc.def
! abc def
abc def ?

如何删除未附加到单词的非字母字符?

所以在我的情况下,只保留以下条目:

abc def
abc.def
abc def
abc def

我尝试使用以下代码,但没有帮助:

arr = arr.filter(function(v) {
    return v.match(/[a-zA-Z]*/)
});

【问题讨论】:

  • 根据您的退出示例,您似乎也想完全修剪空间,对吧?
  • 请定义特殊字符?非阿尔法?
  • @Saleem:是的,非 alpha。
  • 好。请看我的帖子。

标签: javascript arrays regex filter


【解决方案1】:

假设这些都是字符串,你要使用map

array.map(function(string) {
    return string.replace(/\W\s+/g, '');
});

使用非单词字符正则表达式\W 快速删除任何特殊字符。

【讨论】:

  • 刚刚意识到并修复了它
  • 空格呢?它不会也取代它们吗
  • 这是不正确的。我的正则表达式检查后跟空格的非单词字符。空间本身将保持不变
  • “空间本身将保持不变” --- 'a b'.replace(/\W\s+/g, ''); // "ab"
  • "!abc / def! * &".replace(/\W\s+/g, "") 输出 "!abc def&"
【解决方案2】:

请尝试:

result = subject.replace(/[^a-zA-Z0-9\s](?=\s|$)/img, "");

subject 包含要过滤的实际文本。

查看演示https://regex101.com/r/mW2pJ7/1

输入

abc / def`
abc.def`
! abc def`
abc def ?`

输出

  • abc 定义
  • abc.def
  • abc 定义
  • abc def

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多