抱歉可能是一个简单的问题,但我是PHP和Javascript的新手.
我在PHP中创建一个登录验证,要求注册用户以DD/MM/YYYY格式输入他们的出生日期,如果以任何其他格式输入日期,则返回错误消息.我不确定如何做到这一点,除了使用preg_match,但这似乎不起作用......
变量:
$DOB = $_POST['DOB'];
$error_message = '';
Run Code Online (Sandbox Code Playgroud)
日期验证段
elseif (!preg_match("/^(0?[1-9]|[12][0-9]|3[01])\/\.- \/\.- \d{2}$/", $DOB))
{
$error_message = 'Invalid Date';
}
Run Code Online (Sandbox Code Playgroud)
错误显示
if ($error_message != '')
{
echo 'Error: '.$error_message.' <a href="javascript: history.back();">Go Back</a>.';
echo '</body> </html>';
exit;
}
else
{
echo'<p><strong>Form Submitted Successfully!</strong></p>';
}
Run Code Online (Sandbox Code Playgroud)
这不是重复,我尝试了其他线程,他们的解决方案都没有.
我想验证时间输入(如上午10:30,下午02:30)使用 preg_match()
我用这个,
$pattern = "/([1-12]):([0-5])([0-9])( )(am|pm|AM|PM)/";
if(preg_match($pattern,$time)){
return true;
}
Run Code Online (Sandbox Code Playgroud)
但是当我提供类似的输入时10:30 pmxxxx,它将无法验证.我不知道方法是否正确.请帮忙.
因此,用户可以通过键入或使用日期选择器输入出生日期.这可能会出错,所以在服务器端我想检查它是否是一个有效的日期.
我在strtotime()上阅读了很多,看了很多例子,但不是100%正确的例子.
这就是我所拥有的:
$geboortedatum = $_POST['geboortedatum'];
$geboortedatum = date("Y-m-d", strtotime($geboortedatum));
list($y, $m, $d) = explode("-", $geboortedatum);
// var_dump(checkdate($d,$m,$y));
if(checkdate($d, $m, $y)) {
echo "OK Date";
}
else {
echo "BAD Date";
exit();
}
Run Code Online (Sandbox Code Playgroud)
这大部分时间都有效.有没有可靠的方法来检查输入是否是真实且正确的日期?
//编辑
那不是一个好例子!当用户输入31-31-1980时,它也不起作用.这也是有效的,虽然不应该!
我需要一些正则表达式的帮助.我正在尝试验证字符串是否看起来像'yyyy-mm-dd',这是我的代码到目前为止:
case "date":
if (preg_match("/^[0-9\-]/i",$value)){
$date = explode("-",$value);
$year = $date[0];
$month = $date[1];
$day = $date[2];
if (!checkdate($month,$day,$year))
{
$this->errors[] = "Ogiltigt datum.";
}
} else {
$this->errors[] = "Ogiltigt datum angivet.";
}
break;
Run Code Online (Sandbox Code Playgroud)
我对正则表达式很新,谢谢.
在网上搜索验证时间为"HH:MM:SS"后,我发现: HH:MM:SS时间字符串的正则表达式.但当我把它放在我的PHP代码中时,我收到一个错误:
preg_match("^(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$", "12:33:51", $matches);
Run Code Online (Sandbox Code Playgroud)
这是我的错误信息
警告:preg_match():在第128行的db-dataitem.php中找不到结束分隔符'^'
我怎么能改变模式字符串,以便它可以用于PHP?