我有以下代码正则表达式只有符合数字腓
if (preg_match('/[^1-9]/', $single)){
print_r($single."\n");
}
我输入的是:
170
111.111.111.111.in-addr.
dns.names.com
我正则表达式匹配所有输入的,但我想只拥有170林不是很熟。
我有以下代码正则表达式只有符合数字腓
if (preg_match('/[^1-9]/', $single)){
print_r($single."\n");
}
我输入的是:
170
111.111.111.111.in-addr.
dns.names.com
我正则表达式匹配所有输入的,但我想只拥有170林不是很熟。
如果你只是想在你的字符串的任意位置的第一个数字,你可以使用这个表达式:
/(?:^|\s+)(\d+)(?:\s+|\n+|$)/
在你的列表中,它只会匹配170
,你问。
如果你的字符串可能包含你要选择几个号码,指定这样的g
(全球)修改器:/(?:^|\s+)(\d+)(?:\s+|\n+|$)/g
我加入的情况下2个测试串在您的字符串具有不换行或不以数字开头。
好的做法是在应用程序之外总是根据您的输入测试正则表达式。这样,您知道正则表达式在使用之前可以正常工作,作为您的一部分代码。由@Niitaku提供的网站(regex101)是一个很好的资源。 – softius
您正在打印$ 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 - 如你想
为什么有人会拒绝我?这是一个很好的回答 – nospor
贵输入已多次换行? – RomanPerekhrest
nope没有空行 – mk2015
它看起来像'170 111.111.111.111.in-addr.dns.names.com'吗? – RomanPerekhrest