需要一个正则表达式来除去除数字以外的所有内容

29

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

因此,任何数字,甚至像这些(626*)34a2-4387)应该转换为6263424387

如何完成?我认为这太难了吗?


请考虑将Stack Overflow正则表达式FAQ加入书签以备将来参考。特别是要注意字符类的部分。 - aliteralmind
正则表达式字符类[^0-9\n]有什么问题吗?除了它包括一个换行符\n(我假设您想保留它)之外? - David Faber
还有,你正在使用哪种编程语言工作?答案可能取决于此(不同的语言=正则表达式的不同风味)。 - David Faber
这是一段文本,其中包含电话号码以及其他包含数字的文本。因此,7 [^0-9\n] 无法使用。 - user3283015
3个回答

42

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

\D+

或者

[^0-9]+

将其替换为空字符串。

正则表达式演示


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

23

我总是忘记这个问题,然后在互联网上寻找答案。这里是答案,供我以后参考,也供其他人使用。

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

当然,我上面的例子是针对JavaScript的,但它可以轻松地适应其他语言。原始帖子没有指定语言。


5

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

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

JavaScript :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接