如果输入字段的内容与给定格式匹配,我需要检查,例如' d(d-d)'并且值是正确的
有效输入将是:
13 (11-14)
13 (13-13)
括号中的值给出一个范围,所以
我的尝试:
$subject = "3 (1-4)";
$pattern = '/^([0-9])\(([0-9]\-[0-9]?)\)$/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
$first = $matches[1][0];
$second = $matches[2][0];
// check if first <= second...
但是有很多错误。
答案 0 :(得分:1)
您可以使用:
function check($subject) {
$pattern = '/^(\d+)\s\((\d+)\-(\d+)\)$/';
preg_match($pattern, $subject, $matches);
$value = (int)$matches[1];
$min = (int)$matches[2];
$max = (int)$matches[3];
return $value >= $min && $value <= $max;
}
print check("3 (1-4)") ? 'true' : 'false'; // prints true
print check("2 (3-7)") ? 'true' : 'false'; // prints false