我有两个模式,希望能在一个字符串中搜索它们。 它们的样子像这样:
$pattern = '/,3$/'
$pattern = '/^1,/';
实际上,我想找到以
开头或以 1,
结尾的字符串。,3
我的字符串格式如下:
a => 1,2
b => 31,2
c => 4,3
例如,a和c是匹配的!
如何使用preg_match检查这些模式?
感谢帮助。
我有两个模式,希望能在一个字符串中搜索它们。 它们的样子像这样:
$pattern = '/,3$/'
$pattern = '/^1,/';
实际上,我想找到以
开头或以 1,
结尾的字符串。,3
我的字符串格式如下:
a => 1,2
b => 31,2
c => 4,3
这样尝试一下
preg_match("/^1,|,3$/", $string)
/(^1,)|(,3$)/
对你来说应该可行。
万一你有一天需要一个非正则表达式的解决方案,可以使用以下 startswith 和 endswith 函数:
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";
IDEONE演示的输出结果如下:
True1
True3
|
。否则,如果你需要匹配剩下的部分,可以使用类似这样的表达式:(?=^1,(.*?)$)|(?=(.*?),3$)
。 - briosheje(^1,)|(,3$)
在这里测试:https://regex101.com/r/sP8bT8/1 .. ^1, 断言字符串以1开头,字面上。如果不是,则检查它是否以,3结尾。 - briosheje