Javascript正则表达式直到字符串的末尾才匹配
Javascript regular expression does not match till the end of the string
我在javascript中使用正则表达式验证日期。我使用的正则表达式是
/^(((((0?[1-9])|(1'd)|(2[0-8]))'/((0?[1-9])|(1[0-2])))|((31'/((0?[13578])|(1[02])))|((29|30)'/((0?[1,3-9])|(1[0-2])))))'/((20[0-9][0-9])|(19[0-9][0-9])))|((29'/02'/(19|20)(([02468][048])|([13579][26]))))$/
这将准确地匹配日期,但它将匹配诸如1/1/2001ff,尽管我使用$来标记字符串的结束。但如果我给出ff1/1/2001这样的值,它就会失效。所以它只考虑字符串的开头部分,而忽略字符串的结尾部分。
有人知道这是为什么吗
From:检测到"无效日期";JavaScript中的日期实例
if ( Object.prototype.toString.call(d) === "[object Date]" ) {
// it is a date
if ( isNaN( d.getTime() ) ) { // d.valueOf() could also work
// date is not valid
}
else {
// date is valid
}
}
else {
// not a date
}
逻辑上,检查日期是否有效比使用正则表达式匹配日期更有意义。但是,如果您试图搜索日期,您的正则表达式仍然有效(例如,我在notepad++ find中测试了它)。除此之外,就像评论所说的,没有理由使用如此复杂的正则表达式。
正如Dracs正确指出的那样,问题是缺少括号。非常感谢你指出这一点。不使用javascript日期对象的原因是我们只需要在文本框中允许mm/dd/yyyy格式。因此,使用正则表达式来验证文本框是很容易的。
相关文章:
- 将电子邮件验证正则表达式字符串存储在JSON中
- 带有模式的正则表达式字符串
- Javascript if数组包含正则表达式字符串
- 在JSON中指定正则表达式字符串,在JavaScript和PHP中使用
- 从正则表达式文本中获取正则表达式字符串表示的最佳方式
- 正则表达式 - 字符串不能以空格开头,以空格结尾,并且连续包含几个空格
- 正则表达式 - 字符串不应包含超过 7 位数字
- 在 javascript 中将正则表达式字符串转换为正则表达式不同
- Javascript:测试单个字符在正则表达式字符串中找到
- 正则表达式(字符串比较)
- 是否可以生成与正则表达式字符串匹配的字符串
- 正则表达式字符串匹配
- 正则表达式字符串比较忽略符号
- 是否可以使用正则表达式解析正则表达式字符串
- 正则表达式字符串在文档中替换为 JavaScript
- 如何使正则表达式字符串拒绝空白字段
- 拆分正则表达式字符串
- 表示正则表达式字符串表示法
- 将HTML标记添加到此正则表达式字符串中
- 将正则表达式字符串转换为javascript中的正则表达式对象