基本上我有两个选择:
$one = "fdfeb16f096983ada02db49d46a8154475d700ae";
$two = "2011-12-28 05:20:01";
我需要某种正则表达式,以便我可以检测到字符串遵循$one
中的模式或$two
中的模式
检测字符串是sha1还是日期时间。
确定这个的最佳方法是什么?
由于
答案 0 :(得分:5)
如果您 ABSOLUTE 确定这些是 ONLY 两个选项,我会选择strlen,而不是某种奇妙的正则表达式。
即使那些不是唯一的两个选项(用户搞砸了),我仍然会使用strlen,然后专门检查每种格式,如果它是你期望的那样。
答案 1 :(得分:2)
我不知道如何在PHP中应用正则表达式,但假设实际的正则表达式足够......
/^[a-f0-9]{40}$/
匹配由a-f或0-9组成的40个字符。 ^和$匹配字符串的开头和结尾,因此其中没有其他内容。
/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/
将字符串与您拥有的日期模式匹配。
答案 2 :(得分:0)
if (preg_match($one, $string) {
echo "$string matches $one";
} else if (preg_match($two, $string) {
echo "$string matches $two";
}
答案 3 :(得分:0)
尝试使用preg_match()函数。
答案 4 :(得分:0)
使用正则表达式匹配每个选项的条件。对于第二种情况:
if(preg_match('|(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}|',$two)
{
echo "Matching two";
}
我没有看到第一个明确的模式,但你可以使用elseif(s)来检测其他潜在的案例。