PHP正则表达式:替换任何不是点或数字的东西?

时间:2011-09-25 17:52:23

标签: regex

我正在尝试查看字符串是否是IP地址。由于IPv6正在推出,最好也支持它,所以为了简单起见,我只想替换任何不是点或数字的东西。

我通过搜索找到了stackoverflow上的这个正则表达式:

\d+(?:\.\d+)+

但它与我想要的相反。是否可以反转该正则表达式?

谢谢!

4 个答案:

答案 0 :(得分:4)

这个正则表达式将匹配任何不是点或数字的东西:

/[^\.0-9]/

答案 1 :(得分:2)

尝试以下方法:

[^.0-9]+

匹配任何不是点或数字的东西

答案 2 :(得分:0)

我可能会尝试这样的事情(未经测试):
修改
旧的正则表达式离开了,这似乎做得更好(经过测试):
找到:.*?((?:\d+(?:\.\d+)+|))
替换:$1

全球化,单行。

在Perl中:s/.*?((?:\d+(?:\.\d+)+|))/$1/sg

答案 3 :(得分:-1)

正则表达式快捷方式区分大小写。我认为你试图做这样的事情,但你想要的是资本D.    [\D] = any non-digit.

php中的

看起来像这样:

preg_replace('/[\D]/g', '', $string); 

javascript就像这样:

string.replace(/[\D]/g, '');