正则表达式只匹配数字Php

时间:2016-06-10 09:18:49

标签: php regex

我有以下代码

if (preg_match('/[^1-9]/', $single )){
   print_r($single."\n");
}

我的输入是:

170
111.111.111.111.in-addr.
dns.names.com

我的正则表达式匹配所有输入,但我想只有170.我不熟悉。

2 个答案:

答案 0 :(得分:2)

如果您只希望第一个数字位于字符串中的任何位置,则可以使用以下表达式:
/(?:^|\s+)(\d+)(?:\s+|\n+|$)/

在您的列表中,它只会与您提出的170匹配。

如果您的字符串可能包含您要选择的多个数字,请指定g(全局)修饰符,如下所示:/(?:^|\s+)(\d+)(?:\s+|\n+|$)/g

Example on regex101

  

如果您的字符串没有换行或者没有以数字开头,我添加了2个测试字符串。

答案 1 :(得分:0)

您正在打印$ single这是您的文字,这就是您在屏幕上看到此文字的原因。如果您只想看到170,则必须打印匹配的内容:

$single = "170

111.111.111.111.in-addr.

dns.names.com";
if (preg_match('/^(\d+)\s/', $single, $matches )){
   print_r($matches[1]."\n");
}

输出为:170 - 如你所愿