jQuery / Javascript中的DD / MM / YYYY正则表达式等效

时间:2015-08-12 10:55:43

标签: javascript php jquery regex

如何针对输入值进行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");

4 个答案:

答案 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>

http://js.do/code/65207

答案 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

一个有效的演示:

&#13;
&#13;
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;
&#13;
&#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}$/

  1. ^[0-9]{2}表示它会接受所有数字直到99。
  2. [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/190031/12/2999的字符串。