Php 使用preg_匹配组合正则表达式

Php 使用preg_匹配组合正则表达式,php,regex,Php,Regex,我目前有两个正则表达式要匹配。我需要匹配他们中的任何一个 我目前正在使用此代码: $string = '000.400.101'; $regex1 = "^(000\.000\.|000\.100\.1|000\.[36])"; $regex2 = "^(000\.400\.0|000\.400\.100)"; $result = (preg_match('/'.$regex1.'/', $string) || preg_match('/'.$regex2.'/', $

我目前有两个正则表达式要匹配。我需要匹配他们中的任何一个

我目前正在使用此代码:

$string = '000.400.101';

$regex1 = "^(000\.000\.|000\.100\.1|000\.[36])";
$regex2 = "^(000\.400\.0|000\.400\.100)";

$result = (preg_match('/'.$regex1.'/', $string) ||
           preg_match('/'.$regex2.'/', $string)) ? 1 : 0 ;
我想把这个缩短一点,把它弄干净一点。以下内容是否等效:

$result = (preg_match('/'.$regex1.'|'.$regex2.'/', $string)) ? 1 : 0 ;

您可以尝试将所有内容合并到以下单个正则表达式中:

000\.(?:[36]|000\.|100\.1|400\.(?:0|100))

并在PHP中演示了代码的工作原理


顺便说一句,如果您一般需要正则表达式匹配IP地址,我认为这个一般问题应该在堆栈溢出和PHP中已经很好地解决了,您应该搜索一些可能对您有所帮助的内容。

您可以尝试将所有内容整合到以下单个正则表达式中:

000\.(?:[36]|000\.|100\.1|400\.(?:0|100))

并在PHP中演示了代码的工作原理


顺便说一句,如果您一般需要正则表达式匹配IP地址,我认为这个一般问题应该在堆栈溢出和PHP中已经很好地解决了,您应该搜索一些可能对您有帮助的东西。

看起来不错,不是吗?您需要单独定义正则表达式吗?看起来不错,它不起作用吗?您需要单独定义正则表达式吗?谢谢。它实际上并不是针对IP地址的。它用于通过api接收的响应代码。它们表示接受或拒绝信用卡交易。下面的示例…
接受。。。000.100.111 000.100.112 000.300.000 000 000.300.101 000.400.000 000.400.020递减。。。000.400.102 000.400.103 000.400.104 800.100.100 800.100.150 800.100.151我已经试过你的合并正则表达式,它似乎有效,谢谢你谢谢谢谢。它实际上并不是针对IP地址的。它用于通过api接收的响应代码。它们表示接受或拒绝信用卡交易。下面的示例…
接受。。。000.100.111 000.100.112 000.300.000 000 000.300.101 000.400.000 000.400.020递减。。。000.400.102 000.400.103 000.400.104 800.100.100 800.100.150 800.100.151我已经试过你的合并正则表达式,它似乎有效,谢谢