php验证年月日的正则表达式,关于正则表达式:在php中验证日期格式
我正在尝试使用PHP验证日期。
我希望以下格式有效:
d/m/yy
d/m/yyyy
dd/m/yy
dd/m/yyyy
d/mm/yy
d/mm/yyyy
dd/mm/yy
dd/mm/yyyy
我尝试了许多正则表达式和checkdate()函数的不同变体。 目前我有这样的事情:
function _date_is_valid($str)
{
if(strlen($str) == 0)
return TRUE;
if(substr_count($str,'/') == 2)
{
if (preg_match("/^((((31\/(0?[13578]|1[02]))|((29|30)\/(0?[1,3-9]|1[0-2])))\/(1[6-9]|[2-9]\d)?\d{2})|(29\/0?2\/(((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))|(0?[1-9]|1\d|2[0-8])\/((0?[1-9])|(1[0-2]))\/((1[6-9]|[2-9]\d)?\d{2}))/", $str))
{
$datearray = explode('/',$str);
if($datearray[2] > 2030)
return FALSE;
return checkdate($datearray[1], $datearray[0], $datearray[2]);
}
else
{
return FALSE;
}
}
return FALSE;
}
但是,这会验证日期,例如11/11/200和11/11/200#
如何验证日期以匹配所需格式?
编辑:我可以检查datearray [2]在10到30与2010和2030之间。但是有没有办法使用正则表达式检查它?
Edit1:在strlen($ str)== 0上返回TRUE是因为我希望用户能够添加事件而不知道事件何时发生,以便其他人可以限定时间表并将事件分配给以后的某个日期
仅作记录。 我最终做了:
function _date_is_valid($str)
{
if(strlen($str) == 0) //To accept entries without a date
return TRUE;
if(substr_count($str,'/') == 2)
{
list($d,$m,$y) = explode('/',$str);
if(($y >= 10 && $y <= 30) || ($y >= 2010 && $y <= 2030))
{
return checkdate($m,$d,$y);
}
}
return FALSE;
}
谢谢你的回答
function _date_is_valid($str) {
if (substr_count($str, '/') == 2) {
list($d, $m, $y) = explode('/', $str);
return checkdate($m, $d, sprintf('%04u', $y));
}
return false;
}
应该是checkdate(),而不是check_date()。除此之外,对我来说看起来不错。 +1
如果您不检查/的计数,它将在无效字符串上抛出php通知或警告
我对它进行了一些修改,以不验证某些年份后的日期,因为php checkdate()验证了像20111这样的年份,在这种情况下,这不是我想要的
如果没有两个分隔的怎么办?
@antpaw和Gumbo:修复它,谢谢。
如果它将始终是日期/月份/年份,则可以使用checkdate:
function _date_is_valid($str)
{
$array = explode('/', $str);
$day = $array[0];
$month = $array[1];
$year = $array[2];
$isDateValid = checkdate($month, $day, $year);
return $isDateValid;
}
应该是checkdate(),而不是check_date()。您可能想要对$ array索引执行isset()。除此之外,对我来说看起来不错。 +1
哦,是的,您是对的,它是checkdate(),是从问题中复制而未选中它的。谢谢
如果没有两个分隔的怎么办?
一种简单的方法
if(!$formated_date = date_create_from_format('Y-m-d',$dateVar))
你是一颗星星,这对我很有帮助。
尝试这个:
function _date_is_valid($str) {
if (strlen($str) == 0) {
return TRUE;
}
return preg_match('/^(\d{1,2})\/(\d{1,2})\/((?:\d{2}){1,2})$/', $str, $match) && checkdate($match[2], $match[1], $match[3]) && $match[2] <= 2030;
}
为什么返回TRUE?
我想允许日期保留为空或有效格式。它是一种事件日历,您可以在其中预订特定日期的事件或预订事件,然后其他人将日期分配给它
不检查日期或月份是否有效。
@Douglas Leeder:checkdate检查有效日期。
抱歉-没有注意到水平滚动。 preg_match适合显示的宽度。
我所做的验证很简单
function dateValidate($pDate) {
if(empty($pDate))
return true;
$chDate = date('Y-m-d', strtotime($pDate));
if($chDate != '1970-01-01')
return true;
else
return false;
}
您也可以使用regexp找到它
我只是在更改上面的马丁答案,它将验证任何类型的日期并以您喜欢的格式返回。
只需通过在脚本strftime(" 10-10-2012",strtotime($ dt))的行下方进行编辑即可更改格式。
echo is_date("13/04/10");
function is_date( $str )
{
$flag = strpos($str, '/');
if(intval($flag)<=0){
$stamp = strtotime( $str );
}else {
list($d, $m, $y) = explode('/', $str);
$stamp = strtotime("$d-$m-$y");
}
//var_dump($stamp) ;
if (!is_numeric($stamp))
{
//echo"ho" ;
return"not a date" ;
}
$month = date( 'n', $stamp ); // use n to get date in correct format
$day = date( 'd', $stamp );
$year = date( 'Y', $stamp );
if (checkdate($month, $day, $year))
{
$dt ="$year-$month-$day" ;
return strftime("%d-%b-%Y", strtotime($dt));
//return TRUE;
}else {
return"not a date" ;
}
}
?>
if(strtotime($str) !== FALSE) $valid = TRUE;怎么样
-1:OP非常明确地接受哪种格式。您的解决方案支持更多格式。
并且在dd / mm / yyyy和mm / dd / yyyy之间也存在问题
php验证年月日的正则表达式,关于正则表达式:在php中验证日期格式相关推荐
- python正则表达式提取电话号码区号_python中的正则表达式,用于从剪贴板中提取特定格式的电话号码...
我一直在尝试做一个个人项目(project1的一个专门版本,来自Python自动化枯燥的东西,但特别是在我国提取这种格式的电话号码) 可接受的格式为: 手机号码- (+91或91)可选,可以用括号括起 ...
- 如何在JavaScript中验证电子邮件地址
如何在JavaScript中验证电子邮件地址? #1楼 与squirtle相比 ,这是一个复杂的解决方案,但是在正确验证电子邮件方面做得非常出色: function isEmail(email) { ...
- html正则表达式确认密码,如何使用正则表达式在流星中验证确认密码
我使用meteor开发我的应用程序.我需要验证我的注册表单,以便限制用户.现在,我在我的注册表单中输入密码并确认密码.我正在使用正则表达式进行验证.如何使用正则表达式在流星中验证确认密码 我的代码是: ...
- 如何在Java中验证电话号码(正则表达式+ Google libphonenumber)
关于如何在不同国家(例如美国,美国)使用Java验证电话号码的快速指南. 带有正则表达式和Google libphonenumber API的示例程序. 1.简介 在本教程中,我们将学习如何在java ...
- 手机号正则表达式验证_还不会正则表达式?看这篇!
前言 正则表达式是很多程序员,甚至是一些有了多年经验的开发者薄弱的一项技能.大家都很多时候都会觉得正则表达式难记.难学.难用,但不可否认的是正则表达式是一项很重要的技能,所有我将学习和使用正则表达式时 ...
- 请尝试写一个验证Email地址的正则表达式。版本一应该可以验证出类似的Email —— python学习笔记
Python正则表达式的练习 1.1 请尝试写一个验证Email地址的正则表达式.版本一应该可以验证出类似的Email someone@gmail.com bill.gates@microsoft.c ...
- java中验证18位身份证的正则表达式
import java.util.regex.Matcher; import java.util.regex.Pattern; /** *只可以验证输入的身份证是否为18位,不可以验证身份证的正确性 ...
- python用正则表达式判断字符串_使用Python验证常见的50个正则表达式
什么是正则表达式? 正则表达式(Regular Expression)通常被用来检索.替换那些符合某个模式(规则)的文本. 此处的Regular即是规则.规律的意思,Regular Expressio ...
- 手机号正则表达式html,js 获取input的value值及验证手机号和汉字的正则表达式
在项目中经常遇到需要验证输入内容的情况,可以通过 Javascript 判断输入内容,验证手机号或者是否为汉字. 简单的记录一下: HTML部分: 提交 js 部分: 首先获取到元素:var unam ...
- 记一种验证日期格式的正则表达式
工作中经常需要对用户输入的日期进行验证,常用的方式是使用正则对格式进行验证.比如如下: 一.简单的日期判断(YYYY/MM/DD): ^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$ ...
最新文章
- Web中的积累:外观模式 Facade
- 机器大神 Michael Jordan 教授主题演讲:机器学习——创新视角,直面挑战》
- RK1109 RK1126等芯片来袭,2020年瑞芯微旗下SoC一览
- iOS app 企业内部发布及HTTPS服务器配置
- 第一季4:Hi3518E_SDK_Vx.x.x.x的SDK目录结构
- Java笔记-SM3(国密3)和SM4(国密4)的使用
- one-hot与词袋模型
- ofbiz 分开默认数据库
- JS --- this(4)
- 1小时学会jenkins集成邮件/微信/钉钉通知
- 2013-2017蓝桥杯省赛C++A组真题总结(题型及解法)
- “网页上有错误”的解决方法
- 6个常用的Python编程开发工具
- CentOS操作系统的22个log日志
- 学习记录:python快递价格计算器练习7.12
- html用百度网盘怎么看,百度网盘怎么使用?别人给了我一串字母
- Qt实现 基于ffmpeg拉流播放视频
- MATLAB系列笔记:修改编辑器颜色为护眼色(绿豆沙)
- springboot大纲
- HTML基础之常用标签第二篇:有序无序标签,以及框架标签