Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php preg_与多个模式匹配_Php_Regex_Preg Match - Fatal编程技术网

php preg_与多个模式匹配

php preg_与多个模式匹配,php,regex,preg-match,Php,Regex,Preg Match,我有两种模式,我想在字符串中搜索它们。 它们是这样的: $pattern = '/,3$/' $pattern = '/^1,/'; 实际上,我想查找以1、开头或以、3结尾的字符串 我的字符串采用以下格式: a => 1,2 b => 31,2 c => 4,3 例如a和c是匹配的 如何使用preg_match检查此模式 坦克求救。这样试试 preg_match("/^1,|,3$/", $string) /(^1,)|(,3$)/应该适合您。如果有一天您需要非正则表达式

我有两种模式,我想在字符串中搜索它们。 它们是这样的:

$pattern = '/,3$/'
$pattern = '/^1,/';
实际上,我想查找以
1、
开头或以
、3
结尾的字符串

我的字符串采用以下格式:

a => 1,2
b => 31,2
c => 4,3
例如a和c是匹配的
如何使用preg_match检查此模式
坦克求救。

这样试试

preg_match("/^1,|,3$/", $string)

/(^1,)|(,3$)/
应该适合您。

如果有一天您需要非正则表达式解决方案,您可以使用以下方法:

报告的产出:


在他们身上绕一圈然后匹配。我正在寻找一种只需要一张支票的方法。。。!但你需要匹配什么?是否需要检查字符串是否以1开头或以3结尾,或者是否需要提取所有不是该字符串的内容?如果只是需要匹配,只需使用or运算符
|
。否则,如果您需要匹配其余部分,类似这样的操作将起作用:
(?=^1,(.*)$)|(?=(.*),3$)
我想检查一下,但我不知道如何使用OR运算符。@MasoudNazari:那么就是这样:
(^1,)|(,3$)
在这里测试:^1,断言字符串以1开头,按字面意思。如果没有,它将检查是否以3结尾。您需要使用preg_match_all,因为match只能找到1。@AvinashRaj否,这在这里不重要。这是关于匹配多个模式,而不是获得多少结果。在这种情况下,将返回与这两种模式匹配的第一个结果。这就是OP想要的。
function startsWith($haystack, $needle) {
        // search backwards starting from haystack length characters from the end
        return $needle === "" || strrpos($haystack, $needle, -strlen($haystack)) !== FALSE;
    }
function endsWith($haystack, $needle) {
        // search forward starting from end minus needle length characters
        return $needle === "" || (($temp = strlen($haystack) - strlen($needle)) >= 0 && strpos($haystack, $needle, $temp) !== FALSE);
    }

if (startsWith("1,2", "1,") || endsWith("1,2", ",3"))
 echo "True1". "\n";
if (startsWith("31,2", "1,") || endsWith("31,2",",3"))
 echo "True2". "\n";
if (startsWith("4,3", "1,") || endsWith("4,3",",3"))
 echo "True3" . "\n";
True1
True3