使用不带特殊字符 + 验证格式的日期输入创建一个 from

Posted

技术标签:

【中文标题】使用不带特殊字符 + 验证格式的日期输入创建一个 from【英文标题】:Create a from with a date input in format without special characters + validation 【发布时间】:2019-09-15 15:11:47 【问题描述】:

我想创建一个表单,要求用户以这种格式输入日期:“ddmmyyyy”。没有斜线,没有点,没有其他特殊字符。而且我只希望这种格式的使用是有效的,否则我想生成一条错误消息。 所以 - 例如,有效的答案是:

08101974 22032019 01011987

无效的答案是:

40779999 88229933 10152000

谢谢!

【问题讨论】:

【参考方案1】:

您可以使用正则表达式和 javascript .match() 函数

$("#theForm").on("submit", function(e)
  e.preventDefault();
  
  var theDate = $("input[name='date']").val().trim();
  var dateMatch = theDate.match(/^(0?[1-9]|[12][0-9]|3[01])(0?[1-9]|1[012])\d4$/im);
  if (dateMatch)
    alert("Correct!!!")
  else
    alert("Invalid date dude!!!")
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<form id="theForm">
  <label>Date: </label>
  <input type="text" name="date"/>
  <input type="submit" />
</form>
    ^(0?[1-9]|[12][0-9]|3[01]) 从开头匹配 0nn 格式的任何一天 (0?[1-9]|1[012]) 从开头匹配 0nn 中的任何月份,从 0-12 格式开始 \d4 匹配字符串末尾前一年的任意四位数字

【讨论】:

等一下 - 我试过了,现在我看到像 08101974 这样的日期也发出了无效警报... 确保没有空格,我已经调整了代码以修剪空格 我很好奇将正则表达式用于任何解决方案是否是明智的,从我了解到,如果您不了解它们可能的来龙去脉,最好远离那些包含不可逆转的错误,很难找到或解决。有一些替代方案,您正在运行什么样的项目? (例如,当您使用 asp.net mvc 时,您可以坚持使用为您完成工作的数据注释) sn-p 在这里工作,但由于某种原因不在这里:link 很抱歉var theDate = $("input[name]").val().trim() 中有语法错误,它应该是var theDate = $("input[name='date']").val().trim()。我已经修改了更改。

以上是关于使用不带特殊字符 + 验证格式的日期输入创建一个 from的主要内容,如果未能解决你的问题,请参考以下文章

在scala中将字符串日期(不带分隔符)转换为日期格式

验证日期输入格式

vba把一个带时间的日期转为不带时间的日期

使用德语特殊字符的附加方法 JQuery 验证

js 正则验证不能含有中文与特殊字符

Swift 3 中的日期验证