我有以下代码
if (preg_match('/[^1-9]/', $single )){
print_r($single."\n");
}
我的输入是:
170
111.111.111.111.in-addr.
dns.names.com
我的正则表达式匹配所有输入,但我想只有170.我不熟悉。
答案 0 :(得分:2)
如果您只希望第一个数字位于字符串中的任何位置,则可以使用以下表达式:
/(?:^|\s+)(\d+)(?:\s+|\n+|$)/
在您的列表中,它只会与您提出的170
匹配。
如果您的字符串可能包含您要选择的多个数字,请指定g
(全局)修饰符,如下所示:/(?:^|\s+)(\d+)(?:\s+|\n+|$)/g
如果您的字符串没有换行或者没有以数字开头,我添加了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 - 如你所愿