Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在正则表达式中添加特殊符号以允许在文本字段中使用?_Javascript_Regex - Fatal编程技术网

Javascript 如何在正则表达式中添加特殊符号以允许在文本字段中使用?

Javascript 如何在正则表达式中添加特殊符号以允许在文本字段中使用?,javascript,regex,Javascript,Regex,我有以下代码,只允许数字0-9。 但我想同时允许-(连字符).[-ASCII码是45] 我试过了。。但是没有用。。你能更新我的代码吗? function isNumericKey(e) { if (window.event) { var charCode = window.event.keyCode; } else if (e) { var charCode = e.which; } else { return true; }

我有以下代码,只允许数字0-9。
但我想同时允许-(连字符).[-ASCII码是45]
我试过了。。但是没有用。。你能更新我的代码吗?
function isNumericKey(e) { if (window.event) { var charCode = window.event.keyCode; } else if (e) { var charCode = e.which; } else { return true; } if (charCode > 31 && (charCode < 48 || charCode > 57)) { return false; } return true; } function submitMyNumber() { var input = document.getElementById('myInput').value; return input.match(/^[0-9-]+$/) != null; }

<form>
<input type="text" id="myInput" name="myInput" onkeypress="return isNumericKey(event);" /><br />
    <input type="submit" id="mySubmit" name="mySubmit" value="Submit My Number" onclick="return submitMyNumber();" />
</form></pre>
函数isNumericKey(e) { if(window.event){var charCode=window.event.keyCode;} else如果(e){var charCode=e.which;} else{return true;} 如果(charCode>31&(charCode<48 | | charCode>57)){return false;} 返回true; } 函数submitMyNumber() { var input=document.getElementById('myInput')。值; 返回输入。匹配(/^[0-9-]+$/)!=null; }




Laxman Chowdary

似乎您过滤了45字符的代码

 function isNumericKey(e)
        {
        if (window.event) { var charCode = window.event.keyCode; }
        else if (e) { var charCode = e.which; }
        else { return true; }
        if (charCode == 45 || (charCode >= 48 && charCode <= 57)
           return true;
        else
           return false;
    }
如果要匹配日期,模式可能类似于dd(但是是哪种格式?ISO YYYY-MM-dd?或其他格式) 一个更正确的模式将是

 /^\d{4}-\d{2}-\d{2}$/
也许这个更好

 /^[12]\d{3}-[01]\d-[0-3]\d$/
对于DD-MM-YYYY,恢复模式非常简单:

 /^[0-3]\d-[01]\d-[12]\d{3}$/

如果您想要接受29-06-2012,即2位连字符2位连字符4位,这是日期模式,正则表达式是
[0-9]{2}-[0-9]{2}-[0-9]{4}

,因此您想要接受带-。正确的?或者你能解释一下你想让你的代码接受的所有东西吗?我想显示日期,可以使用数字和分隔符-(连字符)…当你没有得到任何事件时,为什么
返回true
不应该返回false吗
?Hachi,这个代码对数字很有效…还有一件事。。在函数isNumericKey(e)中,我们没有添加45。。所以这是不允许的。。如何将其添加到条件中?如何转义连字符<代码>/^[0-9\-]+$/或者由于数字只有一个连字符作为第一个字符,这个
/^-[0-9]+$/
应该更有用。在Saurabh,为了接受-(连字符),我们还必须在isNumericKey(e)中添加一个条件????
 /^[0-3]\d-[01]\d-[12]\d{3}$/