使用 javascript 和 regex 验证日期时间

2023-11-23

我正在尝试使用有效的日期时间格式验证文本框。我需要检查 24 小时日期时间格式。所以我将以下文本输入到我的文本框中22.05.2013 11:23:22

但它仍然无法正确验证它。我对正则表达式完全陌生。这是到目前为止我已经尝试过的

$('#test1').blur(function(){
 var validTime = $(this).val().match(/^[0,1]?\d\/(([0-2]?\d)|([3][01]))\/((199\d)|([2-9]\d{3}))\s[0-2]?[0-9]:[0-5][0-9]?$/);
    debugger;
    if (!validTime) {
        $(this).val('').focus().css('background', '#fdd');
    } else {
        $(this).css('background', 'transparent');
    }
});

这是我的fiddle


使用正则表达式验证日期非常困难。例如,如何验证 2 月 29 日? (这个很难(硬!)

相反,我会使用内置的Date目的。它总是会产生一个有效的日期。如果你这样做:

var date = new Date(2010, 1, 30); // 30 feb (doesn't exist!)
// Mar 02 2010

这样你就会知道它是无效的。您会看到它溢出到三月,这适用于所有参数。如果你的秒数是>59它会溢出到几分钟等。

完整解决方案:

var value = "22.05.2013 11:23:22";
// capture all the parts
var matches = value.match(/^(\d{2})\.(\d{2})\.(\d{4}) (\d{2}):(\d{2}):(\d{2})$/);
//alt:
// value.match(/^(\d{2}).(\d{2}).(\d{4}).(\d{2}).(\d{2}).(\d{2})$/);
// also matches 22/05/2013 11:23:22 and 22a0592013,11@23a22
if (matches === null) {
    // invalid
} else{
    // now lets check the date sanity
    var year = parseInt(matches[3], 10);
    var month = parseInt(matches[2], 10) - 1; // months are 0-11
    var day = parseInt(matches[1], 10);
    var hour = parseInt(matches[4], 10);
    var minute = parseInt(matches[5], 10);
    var second = parseInt(matches[6], 10);
    var date = new Date(year, month, day, hour, minute, second);
    if (date.getFullYear() !== year
      || date.getMonth() != month
      || date.getDate() !== day
      || date.getHours() !== hour
      || date.getMinutes() !== minute
      || date.getSeconds() !== second
    ) {
       // invalid
    } else {
       // valid
    }

}

JSFiddle:http://jsfiddle.net/Evaqk/117/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 javascript 和 regex 验证日期时间 的相关文章

  • 设置双指缩放时精确的滚动位置

    我正在创建一个地图应用程序 它将标记图像放置在画布上并滚动到它 我正在使用浏览器的捏缩放和滚动来放大 缩小地图 然而 我注意到有一些奇怪的行为 我想知道如何解决它 这有点难以解释 但我们开始吧 假设您处于网页的标准缩放级别 无法进一步缩小
  • 正则表达式获取字符串中的第一个数字和其他字符

    我是正则表达式的新手 想知道如何才能只获取字符串中的第一个数字 例如100 2011 10 20 14 28 55 在这种情况下 我希望它返回100 但该数字也可以更短或更长 我在想类似的事情 0 9 但它单独获取每个数字 100 2001
  • netsh 结果到 PowerShell 对象

    我正在尝试与NETSH https ss64 com nt netsh html来自 PowerShell 我想看到这个命令的结果 例如一个对象 但是netsh返回一个字符串 netsh wlan show hostednetwork Ge
  • karma/jasmine 控制台更详细的测试结果

    我使用 Karma 和 Jasmine 进行 javascript 单元测试 假设我有一个失败的测试 如下所示 expect objectA toEqual expectedObjectA 当失败时 我看到控制台上转储了两个对象 并显示一条
  • JavaScript 将键添加到数组中的每个值

    我下面有这个数组 它由一个简单的数组组成 我想要完成的是放一把钥匙id在每个数组值前面以实现类似的效果 id a id b id c id d 有没有一种简单的方法可以做到这一点 任何帮助将不胜感激 谢谢 var test a b c d
  • 如何在 React Native 上显示 SVG 文件?

    我想显示 svg 文件 我有一堆 svg 图像 但我找不到显示的方式 我尝试使用Image and Use的组成部分反应本机 svg https github com magicismight react native svg但他们不这样做
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • 将 Firebase FCM 添加到 ReactJS 应用程序

    我正在尝试向我的 ReactJS 应用程序中的用户发送推送通知 我已添加 firebase 请求用户通知权限 这正在发挥作用 但现在我想注册设备令牌 但这给了我错误 消息传递 我们无法注册默认的 Service Worker 无法注册 Se
  • 使用 JQuery 禁用和启用所有超链接

    我有以下禁用所有超链接的内容 但在事件发生后我想再次启用它们 我该如何执行此操作 a click function return false 我认为这不仅仅是将其设置为 true 那么简单 谢谢大家 不要以这种方式绑定 点击 处理程序 而是
  • 如何将 arraylist 从 servlet 传递到 javascript?

    我通过在属性中设置数组列表并将其转发到 jsp 来从 servlet 传递数组列表 Servlet ArrayList
  • 当我多次调用 requestAnimationFrame 时会发生什么

    我的意思是一次调用多个具有相同功能的 requestAnimationFrame function Draw DoSomething function AFunc prepare something requestAnimationFram
  • webpack中动态加载外部模块失败

    我正在尝试建立以下架构 一个核心 React 应用程序 它具有一些基本功能 并且能够在运行时加载其他 React 组件 这些额外的 React 组件可以按需加载 并且它们在构建核心应用程序时不可用 因此它们不能包含在核心应用程序的捆绑包中
  • javascript 是否有等效的 __repr__ ?

    我最接近Python的东西repr这是 function User name password this name name this password password User prototype toString function r
  • 为什么这些非捕获正则表达式组不能正常工作?

    所以我花了很多时间在另一个堆栈溢出问题上 同样的问题又出现在上一个问题上 非捕获组并没有像我期望的那样工作 至少我是这么认为的 这是一个愚蠢的例子 类似于其他人的 CSS 测试字符串 这是我的正则表达式 rgb S 这是测试字符串 1px
  • 如何为我的整个 Node.js 应用程序使用相同的 MySQL 连接?

    我有一个app js 我从那里运行我的整个应用程序 在 app js 内部 我require许多文件中都有代码 对于每个文件 我都这样做 var mysql require mysql var mclient mysql createCon
  • Javascript 浮点乘以 100 仍然有错误

    我有一个货币字段的文本输入 我在字段中输入 33 91 并在尝试使用 乘以 100 技术时得到以下结果 var curWth parseInt trans withdraw index val 100 3390 var curWth par
  • 为什么 Node.js 应用程序只能从 127.0.0.1/localhost 访问?

    我本来打算教我的朋友介绍 Node 但是后来 我想知道为什么这个代码来自nodejs org var http require http http createServer function req res res writeHead 20
  • ThreeJS 中阴影的奇怪行为

    所以我有一个 ThreeJS 场景 并且添加了一些球体 多材质 我还添加了定向光 this light new THREE DirectionalLight 0xFFFFFF 1 this light position set 2 10 2
  • Jwt 签名和前端登录身份验证

    我有这个特殊的 jwt sign 函数 Backend const token jwt sign id user id process env TOKEN SECRET expiresIn 1m res header auth token
  • 如何映射轮播的子项数组?

    我正在尝试将 Carousel 组件包装在映射对象数组周围作为组件的子级 目前我只能让映射创建映射对象的 1 个子对象 轮播需要像这样

随机推荐

  • 软堆:什么是损坏以及它为什么有用?

    我最近读了 Bernard Chazelle 的论文 The Soft Heap An Approximate Priority Queue with Optimal Error Rate by Bernard Chazelle http
  • 如何对部分路径使用 .htaccess 重定向?

    我必须调整网站上的一些路径 并且需要使用 htaccess 在用户访问旧网址时重定向项目 例如我的旧网址 相对 可能是 old path page1 php old path page2 php old path page3 php etc
  • 如何快速设置栏按钮的图像?

    我正在尝试为栏按钮项目设置一个图像 因为我有一个像这样的图像 分辨率为 30 30 但当我将此图像分配给 栏 按钮时 它看起来像 我已经这样分配图像 如果我尝试这种方式 例如为按钮制作 IBOutlet 并以编程方式设置图像this问题和代
  • 在新的材料设计中,是否有一个官方 API 用于在工具栏上居中标题,就像流行的 Android 应用程序一样?

    背景 过去 Google 总是显示工具栏以使标题左对齐 https material io develop android components app bar layout 然而 最近 似乎在它的一些应用程序上 标题居中 即使它的左右没有
  • 时间:2019-03-17 标签:c#XMLSchemavalidation

    我有一个很好的 XML 文件 如下所示
  • 使用 Launch4j 将 Java 应用程序固定到 Windows 7 任务栏

    我目前正在尝试将 Java 应用程序固定到 Windows 7 任务栏 该应用程序启动时使用Launch4j 程序图标显示正确 但右键单击任务栏上的图标仅显示带有 关闭窗口 条目的上下文菜单 没有用于将应用程序固定到任务栏的菜单条目 将 E
  • 使用js或html5以编程方式记录网页的音频输出?

    有没有办法以编程方式捕获使用 html5 js 或其他内容从网页播放的音频并从中创建 mp3 wav 文件 我知道网络音频 API 但我只能找到有关从麦克风输入录制音频的信息 而不是网页输出的信息 Thanks 您可以使用 Web Audi
  • Vue中JS和SCSS之间的共享变量

    我最近开始使用 Vue js 2 并且我很喜欢单文件组件结构
  • AngularJS orderby 整数字段无法正常工作

    我刚刚拿了最简单的演示http docs angularjs org api ng filter orderBy只需将年龄的值更改为不同的位数即可 它停止按预期工作 它的顺序类似于 字符串 而不是 整数 值 我应该如何更改它 以便它按年龄排
  • 如何突出显示 ggplot 上的方差?

    我不知道该如何提出这个问题 所以我使用了这个方法 我有一个经纬度数据集 下面发布的图像是我想要生成的 这是我的数据集 Latitude Longitude 21 06941667 71 07952778 21 06941667 71 079
  • 以编程方式获取设备的 Android API 级别?

    如何查明我的设备正在使用哪个 API 级别 固件版本为1 6 这是否意味着它使用 API 级别 4 您可以通过系统常量 Build VERSION SDK INT 例如 您可以通过以下方式运行一些需要更新 API 的代码 如果当前设备的 A
  • 如何将字符串的第一个字母大写

    我有一个像这样的字符串 var sentence string the biggest ocean is the Pacific ocean 我希望能够将第一个字母大写t在输入字符串中 使该字符串变为 The biggest ocean i
  • Paypal 可变金额定期付款

    首先 请注意 我已经阅读了许多有关此主题的帖子 但提供的信息对我来说不够或不准确 我正在使用 AngularJS 和 Ruby on Rails 开发一个提供不同服务的网站 用户可以订阅这些服务 一项或多项 并获得 Paypal 定期付款
  • YYYYMMDD 日期格式正则表达式以验证 C# .net 中的日期

    我需要在 C 中使用正则表达式验证日期格式 格式如下 YYYYMMDD 正则表达式不适合此任务 例如 编写匹配有效日期 20080229 但不匹配无效日期 20100229 的正则表达式是很困难的 相反 你应该使用DateTime TryP
  • RNN:Keras框架中LSTM层的return_sequences有什么用

    我在 RNN 工作 我有来自某个网 站的以下代码行 如果您观察到第二层没有 returnSequence 参数 我假设返回序列是强制性的 因为它应该返回序列 您能告诉我为什么没有定义吗 第一层LSTM regressor add LSTM
  • valgrind 条件跳转或移动取决于未初始化的值,这是否表明内存泄漏?

    我在代码中面临内存泄漏问题 在运行时 堆继续增加到最大值 我需要重新启动服务 我运行 top 命令并看到每当我调用服务中的场景时堆都会增加 我用 valgrind 运行服务 valgrind log file log feb19 txt l
  • DLL 总是有相同的基地址吗?

    我正在研究 Windows 和 DLL 的东西 我对此有一些疑问 我编写了一个简单的程序来加载我自己的 DLL 这个DLL只有简单的函数 加号 减号 这就是问题 如果我加载一些 DLL 例如 text dll 这个DLL总是有相同的基地址吗
  • PHP https 使用 cURL 发布 XML 数据

    我正在尝试使用 PHP 将带有 XML 数据的 HTTPS POST 请求发送到服务器 发送到服务器的任何内容都需要身份验证 因此我将使用 cURL 一些背景信息 XML数据是请求服务器将文件从特定URL上传到其本地存储 使用此 API 的
  • 禁用或启用复选框选中事件上的提交按钮

    我想要这样的东西 但有一点小小的改变 我希望在复选框选中事件上启用或禁用按钮 即当选中复选框时 然后只应启用按钮 否则将被禁用 这应该使用 jQuery 代码而不是 JavaScript 来完成 由于这是 MVC 表单 因此没有表单 ID
  • 使用 javascript 和 regex 验证日期时间

    我正在尝试使用有效的日期时间格式验证文本框 我需要检查 24 小时日期时间格式 所以我将以下文本输入到我的文本框中22 05 2013 11 23 22 但它仍然无法正确验证它 我对正则表达式完全陌生 这是到目前为止我已经尝试过的 test