php中带正则表达式的测试管道分隔格式

php中带正则表达式的测试管道分隔格式,php,regex,Php,Regex,我需要验证字符串是否为以下格式,否则我需要返回警告消息 紫色葡萄汁 生菜在沙拉中很好吃 黄色|猴子喜欢香蕉 红西瓜很好吃 我需要它在上面的管道分隔数据中,每一行被分成两个块,然后是一个新行 如果一条管线中有3条管道,那么它是不正确的。我不确定您想要得到什么,但如果我猜您需要这样的东西: <? $lines = explode("\n",$str); foreach ($lines as $lineIndex => $oneLine) if (count(explode('|

我需要验证字符串是否为以下格式,否则我需要返回警告消息

紫色葡萄汁
生菜在沙拉中很好吃
黄色|猴子喜欢香蕉
红西瓜很好吃

我需要它在上面的管道分隔数据中,每一行被分成两个块,然后是一个新行


如果一条管线中有3条管道,那么它是不正确的。

我不确定您想要得到什么,但如果我猜您需要这样的东西:

<?
$lines = explode("\n",$str);

foreach ($lines as $lineIndex => $oneLine)
    if (count(explode('|',$oneLine))>2) echo "You have an error in line ".$lineIndex;

?>

我不确定你想要什么,但如果我猜你需要这样的东西:

<?
$lines = explode("\n",$str);

foreach ($lines as $lineIndex => $oneLine)
    if (count(explode('|',$oneLine))>2) echo "You have an error in line ".$lineIndex;

?>

此正则表达式将根据您的规范验证整个字符串:
^(\w+\\\\[\w]+(\n}$)+$

如果其中一行无效,
preg_match()
将返回
false

注意:我假设左侧部分仅包含数字和字母,而第二部分包含相同的加号空间
现场观看:

因此,您需要的所有代码是:

if (!preg_match($regex,$string)) trigger_error("Invalid string!",E_USER_WARNING);

实时代码:

此正则表达式将根据您的规范验证整个字符串:
^(\w+\\[\w]+(\n\$)+$

如果其中一行无效,
preg_match()
将返回
false

注意:我假设左侧部分仅包含数字和字母,而第二部分包含相同的加号空间
现场观看:

因此,您需要的所有代码是:

if (!preg_match($regex,$string)) trigger_error("Invalid string!",E_USER_WARNING);

实时代码:

您只需要一个RegExp匹配项。将字符串拆分为新行,然后在每行上运行RegExp匹配,如果匹配返回false,则提前结束函数(短路)。RegExp本质上是一行的开始(^)和任何非管道的东西([^\\\\\]])和一个管道(\\\\])以及任何非管道的东西([^\\\\\]])和一行的结束($)


您只需要一个RegExp匹配。将字符串拆分为新行,然后在每行上运行RegExp匹配,如果匹配返回false,则提前结束函数(短路)。RegExp本质上是一行的开始(^)和任何非管道的东西([^\\\\\]])和一个管道(\\\\])以及任何非管道的东西([^\\\\\]])和一行的结束($)