gpt4 book ai didi

PHP 正则表达式 - 从字符串的开头和结尾匹配

转载 作者:行者123 更新时间:2023-12-04 00:09:25 24 4
gpt4 key购买 nike

我使用在线正则表达式 (regex) 测试器来构建一个简单的正则表达式,但是使用 PHP 的 preg_match它为 $ 提供了一个未知的修饰符。

这是正则表达式:

if (preg_match('/(^Keyword1/$|^Keyword2/$)/', $input, $matches))

我正在尝试检查 $input 是否等于 Keyword1/或 Keyword2/(完全匹配)。我知道我可以使用“if ($input == 'Keyword1/')”轻松做到这一点,但是我宁愿在代码中使用几行正则表达式而不是十几个 if 语句。

我该如何解决?

最佳答案

您需要转义正则表达式中的 /,因为 / 也被用作分隔符:

if (preg_match('/(^Keyword1\/$|^Keyword2\/$)/', $input, $matches))
^ ^

或者,使用不同的分隔符:

if (preg_match('~(^Keyword1/$|^Keyword2/$)~', $input, $matches))
^ ^

由于您的两个子正则表达式都有共同的 anchor ,您可以将您的正则表达式简化为:

 if (preg_match('~^(Keyword1|Keyword2)/$~', $input, $matches))

为什么在你的正则表达式中出现警告?

'/(^Keyword1/$|^Keyword2/$)/'

由于您使用 / 作为分隔符,正则表达式中的第二个 / 会使 PHP 认为它是正则表达式的结尾。现在 PHP 在结束分隔符之后接受 smi 等正则表达式修饰符。但在您的情况下,PHP 在结束分隔符之后看到一个 $ 。由于 $ 不是有效的修饰符,您会收到警告:

PHP Warning: preg_match(): Unknown modifier '$' in ...

关于PHP 正则表达式 - 从字符串的开头和结尾匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8278363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com