2
試圖搜索已經回答的問題,但...找不到任何東西。 我試圖做一個正則表達式將匹配IPv4或IPv4的:端口REGEX:無條件匹配
$regex_ipv4 = '((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))(?![\\d])';
$regex_integer = '(\\d+)';
$x = "123.123.123.123";
$x2 = $x . ":12345";
preg_match("/^(?<ipv4>".$regex_ipv4.")(:)(?<port>".$regex_integer.")$/is", $x, $matches1);
preg_match("/^(?<ipv4>".$regex_ipv4.")(:)(?<port>".$regex_integer.")$/is", $x2, $matches2);
print_r($matches1);
print_r($matches2);
回報:
Array
(
)
Array
(
[0] => 123.123.123.123:12345
[ipv4] => 123.123.123.123
[1] => 123.123.123.123
[2] => 123.123.123.123
[3] => :
[port] => 12345
[4] => 12345
[5] => 12345
)
我怎樣才能使(:)(?<port>".$regex_integer.")
無條件的比賽?
謝謝!
什麼你的意思是「無條件地匹配......」嗎? –
'((:)(?「。$ regex_integer。」))?'? –
看起來代碼正在工作,命名組捕獲你所需要的。 –