Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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 RegExp只允许在某些位置使用某些字符_Javascript_Validation_Textbox - Fatal编程技术网

Javascript RegExp只允许在某些位置使用某些字符

Javascript RegExp只允许在某些位置使用某些字符,javascript,validation,textbox,Javascript,Validation,Textbox,我想使用regexp“强制”用户正确格式化时间戳 目前,我可以限制输入,以便用户只能使用以下命令输入数字、破折号或冒号: function allownumbers(e) { var key = window.event ? e.keyCode : e.which; var keychar = String.fromCharCode(key); var reg = new RegExp("[-0-9: ]") if (key ==

我想使用regexp“强制”用户正确格式化时间戳

目前,我可以限制输入,以便用户只能使用以下命令输入数字、破折号或冒号:

function allownumbers(e) {
        var key = window.event ? e.keyCode : e.which;
        var keychar = String.fromCharCode(key);
        var reg = new RegExp("[-0-9: ]")
        if (key == 8) {
            keychar = String.fromCharCode(key);
        }
        if (key == 13) {
            key = 8;
            keychar = String.fromCharCode(key);
        }
        return reg.test(keychar);
    }
但是,用户仍然可以输入无效数据,例如0000::--12354将进行验证

我可以使用regexp强制用户输入#####-#-#-#-#:#:#:#(例如2010-12-15 10:57:01)吗

(如果它在字符串中的正确位置自动添加破折号、冒号和空格,则更酷。)

干杯

Ben

使用

由于您有一个自定义的日期格式,我将向您指出

如果您想在输入过程中强制使用某个模式,请查看以下内容。

使用

由于您有一个自定义的日期格式,我将向您指出


如果您想在输入期间强制使用某个模式,请查看以下内容。

您的regexp模式可以是

var re = /\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d/;

您的regexp模式可以是

var re = /\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d/;

您可以很容易地做到这一点-只需使用{}来限制条目的数量。作为一个相当粗糙的例子,regex:
[0-9]{4}-[0-9]{2}-[0-9]{2}[0-9]{2}:[0-9]{2}
将执行您想要的操作,只需针对文本框的全部内容进行测试-例如reg.match(e.srcelection.value)


如果您希望在进行过程中对其进行测试,您可以使用中的代码确定光标位置,然后根据您在该位置期望的内容检查新输入,是的,甚至可以自动添加破折号或空格。

您可以很容易地做到这一点-只需使用{}来限制条目数。作为一个相当粗糙的例子,regex:
[0-9]{4}-[0-9]{2}-[0-9]{2}[0-9]{2}:[0-9]{2}
将执行您想要的操作,只需针对文本框的全部内容进行测试-例如reg.match(e.srcelection.value)


如果您希望在进行过程中对其进行测试,您可以使用中的代码确定光标位置,然后根据该位置的预期检查新输入,是的,甚至可以自动添加破折号或空格。

为什么不使用一小块验证?在他们输入字符串之后

var date = new Date(dtStr);
if (isNaN(date) && dtStr != "MM/DD/YYYY") {

    return alert('Please enter a valid date');
}
else {
    if (date.getFullYear() > 2100 || date.getFullYear() < 1900) {
        return alert("Please enter a valid year");
    }
}
var-date=新日期(dtStr);
如果(isNaN(日期)&&dtStr!=“MM/DD/YYYY”){
返回警报(“请输入有效日期”);
}
否则{
如果(date.getFullYear()>2100 | | date.getFullYear()<1900){
返回警报(“请输入有效年份”);
}
}

为什么不使用一小块验证?在他们输入字符串之后

var date = new Date(dtStr);
if (isNaN(date) && dtStr != "MM/DD/YYYY") {

    return alert('Please enter a valid date');
}
else {
    if (date.getFullYear() > 2100 || date.getFullYear() < 1900) {
        return alert("Please enter a valid year");
    }
}
var-date=新日期(dtStr);
如果(isNaN(日期)&&dtStr!=“MM/DD/YYYY”){
返回警报(“请输入有效日期”);
}
否则{
如果(date.getFullYear()>2100 | | date.getFullYear()<1900){
返回警报(“请输入有效年份”);
}
}

这太过分了——为什么要为这样一个小任务引入一个完全不同的库呢?@Benubird:我认为不过分;如果它将在许多地方使用,并且可能有不同的输入规则,为什么不使用它呢?这是一个很好的解决常见问题的方法,因为这并不意味着需要比这个简单的任务更多的东西;据我们所知,这可能是整个网站上唯一的javascript——你假设他有很多地方可以使用它,但情况可能并非如此。更不用说,你还没有回答这个问题。他在询问正则表达式的用法;仅仅说“去使用图书馆”是毫无帮助的,因为它不提供任何信息。这太过分了——为什么要为这样一个小任务引进整个其他图书馆?@Benubird:在我看来,这不过分;如果它将在许多地方使用,并且可能有不同的输入规则,为什么不使用它呢?这是一个很好的解决常见问题的方法,因为这并不意味着需要比这个简单的任务更多的东西;据我们所知,这可能是整个网站上唯一的javascript——你假设他有很多地方可以使用它,但情况可能并非如此。更不用说,你还没有回答这个问题。他在询问正则表达式的用法;仅仅说“使用图书馆”是毫无帮助的,因为它没有提供任何信息。