如何针对输入值进行javascript正则表达式检查?我在php中的表现方式相同:
if (preg_match("/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/", $_POST['date']) === 0)
它必须仅验证DD / MM / YYYY,不应该除D / M / YYYY外。我的PHP代码不允许D / M / YYYY,只允许DD / MM / YYYY,它需要对我正在进行的集成严格。
更新了代码:但仍然返回false:/
//Date must ONLY be DD/MM/YYYY
jQuery.validator.addMethod("strictDate", function (value, element) {
if (this.optional(element)) {
return true;
}
var patt = new RegExp("/^((0[1-9])|([12][1-9])|(3[01]))\/((0[1-9])|(1[0-2]))\/((19[0-9]{2})|(2[0-9]{3}))$/");
if (patt.test(value)) {
return true;
} else {
return false;
}
}, "Date must be in the following format DD/MM/YYYY");
答案 0 :(得分:2)
试试这个..
它的工作方式与05/05/2005不同,不是2005年5月5日
并且像05/05/2005 05/5/2005一样工作
<html>
<head>
<title>Date Example</title>
<script type="text/javascript">
function isValidDate(sText) {
var reDate = /(?:0[1-9]|[12][0-9]|3[01])\/(?:0[1-9]|1[0-2])\/(?:19|20\d{2})/;
return reDate.test(sText);
}
function validate() {
var oInput1 = document.getElementById("txt1");
if (isValidDate(oInput1.value)) {
alert("Valid");
} else {
alert("Invalid!");
}
}
</script>
</head>
<body>
<P>Date: <input type="text" id="txt1" /><br />
example: 05/05/2005<br />
<input type="button" value="Validate" onclick="validate()" /></p>
</body>
</html>
答案 1 :(得分:1)
这是JS的方式:
string='moshe';
if (string.match("/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/)){
}
还有另一种方式
var reg=new RegExp("^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$")
bool=reg.test('12/33/1234') //true
一个有效的演示:
function check(){
alert('The value is date (true/null):' + abc.value.match(/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/))
}
&#13;
Enter Data:<input id=abc>
<button onclick=check()>Check</button>
&#13;
答案 2 :(得分:1)
您粘贴的正则表达式无法正确验证日期,月份和年份。我修改它采取dd / mm / yyyy,dd-mm-yyyy或dd.mm.yyyy。如果您只想要/已编入日期,请在代码中使用\/
代替\/|-|\.
。
^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?: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]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
修改强>
您的regx:/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/
^[0-9]{2}
表示它会接受所有数字直到99。[0-9]{4}$
表示它将接受所有号码,直至9999。答案 3 :(得分:0)
我建议你这样的正则表达式:
^((0[1-9])|([12][1-9])|(3[01]))\/((0[1-9])|(1[0-2]))\/((19[0-9]{2})|(2[0-9]{3}))$
验证从01/01/1900
到31/12/2999
的字符串。