【问题标题】:Need a regex to remove everything except numbers需要一个正则表达式来删除除数字之外的所有内容
【发布时间】:2015-01-05 02:53:20
【问题描述】:

除了 [^0-9\n] 之外,我还需要一些东西,我想要一个正则表达式(但不知道如何制作),它可以捕获像这样的数字模式中的任何东西,“0000000000”或“000-000-” 0000" 或者基本上是任何在之前或之间存在空格和/或特殊字符的数字。

所以任何数字,即使像这些 (626*) 34a2- 4387) 都应该转换为 6263424387

如何实现这一点?我觉得它太难了?

【问题讨论】:

  • 请考虑将Stack Overflow Regular Expressions FAQ 加入书签以供将来参考。具体参见字符类部分。
  • 正则表达式字符类[^0-9\n]有什么问题?除了它包含一个换行符\n(我假设你想保留它)之外?
  • 另外,您使用的是哪种语言?答案可能取决于此(不同的语言 = 不同风格的正则表达式)。
  • 它是文本段落,那里有电话号码,但也有其他包含数字的文本。所以 7[^0-9\n] 不起作用

标签: regex


【解决方案1】:

您可以使用以下方法搜索所有非数字:

\D+

[^0-9]+

并用空字符串替换。

RegEx Demo

【讨论】:

  • 实际上,我需要在文字墙中查找并删除除电话号码之外的所有其他内容,例如段落,而不是成行。它基本上应该像这样 xxx+xxx+xxxx,其中 + 可以包含从字母到所有特殊字符的任何内容。所以可以是 123*454j4323 等,也可以是 xxxxxxxxxx
  • 假设有一堵文字墙,一个段落。我们需要删除段落的所有内容,只保留电话号码。电话号码可以是这样的 (xxx)xxx-xxxx 或 xxxxxxxxxx 或 +xxx+xxx+xxx+ 其中“+”号所在的位置可以是字母或特殊字符。我们希望能够检测到任何号码,即使它是这样的,*444d654-3244),我们稍后可以使用 [^0-9\n] 清理所有电话号码行,但现在,我们想要检测上述格式
【解决方案2】:

我自己总是忘记这个,然后上网寻找答案。在这里,供我将来参考,以及互联网的其余部分

const rawNumber = '(555) 123-4567';
const strippedNumber = rawNumber.replace(/\D+/g, '');

当然,我上面的示例是特定于 JavaScript 的,但它可以很容易地适应其他语言。原始帖子未指定语言。

【讨论】:

    【解决方案3】:

    这是一个更好的方法。它也包括十进制数字。

    "$9.0".replace(/[^0-9.]+/g, '');
    

    JavaScript :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-16
      • 2011-09-08
      • 2017-08-24
      • 1970-01-01
      • 1970-01-01
      • 2018-05-26
      • 2019-04-15
      相关资源
      最近更新 更多