Javascript子字符串验证/比较
Javascript SubString Validation/Comparison
我已经摆弄这段代码大约一个小时了,这让我难以置信。我认为解决办法会很简单,但我似乎想不通。不管怎样。我制作了一个javascript函数,用于检查用户输入的字符,以便它只能接受7个字符作为有效条目。这部分工作正常。不起作用的是下一部分,然后检查前三个字符,看看它们是否与一年中的月份匹配,如果不匹配,它就没有通过。到目前为止,即使输入的字符是jan2345或feb3939等等,它也永远不会返回true。任何帮助都将是有问题的代码。
function validateBirthDate() {
var s =document.pizza.birthday.value;
var check=/[A-Za-z]{3}[0-9]{4}/;
if(s.length<7 || s.length > 7) {
alert("The birth date should have 7 characters!");
return false;
}
if(s.length==7) {
if(check.test(s)==true) {
if(s.substring(0,3)!=="jan" || s.substring(0,3)!=="feb" || s.substring(0,3)!=="mar"|| s.substring(0,3)!=="apr" || s.substring(0,3)!=="may" || s.substring(0,3)!=="jun" || s.substring(0,3)!=="jul" || s.substring(0,3)!=="aug" || s.substring(0,3)!=="sep" || s.substring(0,3)!=="oct" || s.substring(0,3)!=="nov" || s.substring(0,3)!=="dec")
{
alert("The first 3 characters must be a 3 letter abbreviation of one of the 12 months!");
return false;
}
逻辑是的问题
!(s.substring(0,3)=="jan" || s.substring(0,3)=="feb")
您不应该使用||
,而应该使用&&
。如果s
是"jan"
,则它不等于"feb"
,因此alert
将激发。
您还可以执行以下操作:
var months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];
if (months.indexOf(s.substring(0,3)) === -1) {
alert();
}
或
if (!/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/i.test(s.substring(0,3))) {
alert();
}
但就其价值而言,这听起来是一种获得有效日期输入的可怕方式。有三个输入,一个用于天,一个表示月,一个代表年,并将可能的输入值限制为有效值。或者更好的是,将<input>
与type=date
一起使用——尽管这对浏览器的支持有限。某种插件可能是你最好的选择。
相关文章:
- jQuery自定义验证比较多个输入的序列
- jQuery验证插件-比较两个选择下拉列表的自定义方法
- 使用jQuery验证和比较输入
- 用于电子邮件比较/验证的PHP代码
- jQuery验证以比较开始日期和结束日期
- 如何将 2 个值与 MVC 中的客户端验证进行比较 ASP.NET
- 不显眼的日期比较验证器
- 比较两个字段的验证
- 服务器端表单验证 AJAX,通过比较不同页面上的两个文本框
- 比较输入验证HTML JavaScript中的两个输入值
- jQuery 验证 - 比较同一类的值
- 如何将当前日期与未来日期进行比较并用javascript进行验证
- 比较并验证输入字段
- jquery验证器比较2个字段的错误
- 仅在chrome和android设备中使用任何布尔比较操作崩溃验证本地存储项
- 比较日期格式为dd MMM yyyy的验证
- Javascript比较并验证两个文本字段
- 比较日期并验证django中的]
- 如何使用jQuery验证器比较两个字段
- javascript日期验证使用字符串进行比较