Javascript RegExp只允许在某些位置使用某些字符
我想使用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 ==
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——你假设他有很多地方可以使用它,但情况可能并非如此。更不用说,你还没有回答这个问题。他在询问正则表达式的用法;仅仅说“使用图书馆”是毫无帮助的,因为它没有提供任何信息。