【发布时间】:2017-11-03 20:04:53
【问题描述】:
我正在尝试查看 2 个字符串是否匹配。
example: 1234.5678.9012.3456 => 5678.1234.3456 = match
这匹配是因为第二个数字字符串也在第一个字符串中。我用以下代码做到了这一点:
<?php
$haystack = '1234.5678.9012.3456';
$needle = '5678.1234.3456';
$regex = '/(?=.*'. str_replace(".",")(?=.*",$needle) .').*$/';
// regex looks like this /(?=.*5678)(?=.*1234)(?=.*3456).*$/
if(preg_match($regex, $haystack)){
echo "A match was found.";
} else {
echo "A match was not found.";
}
?>
这是我的问题,当有重复的数字时。
example: 1234.5678.9012.3456 => 5678.5678.3456 = dont match
1234.5678.5678.3456 => 5678.5678.3456 = match
第一个示例不匹配,因为 5678 出现了两次,但第一个字符串只有一次 5678。在第二个示例中,5678 也出现了两次,因此与第二个字符串匹配。
我的问题:如何更改我的正则表达式,
【问题讨论】:
-
strpos还不够吗? -
不使用正则表达式,而是使用
split()将每个字符串拆分为一个字符串数组,然后使用array_diff()检查第二个中的所有内容是否都在第一个中。
标签: php regex preg-match