在我的表格中,我有一个字段,询问用户他们希望我什么时候给他们打电话。
输入的代码如下(<form>
标签除外):
<p>
<label>When can we call you?:</label>
<br>
<input type="text" name="contactconvenience" placeholder="HH:MM or "anytime"" onchange="checkCallTime()">
</p>
<div id="callbackwarn"></div>
我想使用RegEx检查用户是否输入了格式为HH:MM的时间或特定字符串“anytime”,但我正在使用的代码不起作用。
var callback = /^\d{2}([:]\d{2})$/;
var callbackanytime = str.match(/anytime/g);
function checkCallTime() {
var valid = true;
if ((!callback.test(document.bookingsform.contactconvenience.value)) || (!callbackanytime.test(document.bookingsform.contactconvenience.value))) {
document.bookingsform.contactconvenience.style.border = "1px solid red";
document.getElementById("callbackwarn").innerHTML = "Enter a time in the format HH:MM or type \"anytime\".";
document.bookingsform.contactconvenience.title = "Please enter a time in the format HH:MM or type \"anytime\".";
document.getElementById("callbackwarn").style.display = "block";
valid = false;
} else {
document.bookingsform.contactconvenience.style.border = "1px inset #EBE9ED";
document.bookingsform.contactconvenience.style.borderRadius = "2px";
document.getElementById("callbackwarn").style.display = "none";
}
}
正如您所看到的,我使用了两个单独的RegEx表达式,一个用于匹配HH:MM格式的时间;另一个用于匹配特定字符串“anytime”。
在函数本身中,我使用||
查看if
是否已匹配任何一个RegEx。
注意:我知道我使用的是onchange
而不是onsubmit
,<form>
标记包含onsubmit
调用主函数。
答案 0 :(得分:1)
午夜00:00午夜;
var callback = /^(([01]\d|2[0-3]):([0-5]\d)|anytime)$/;
if (!callback.test(document.bookingsform.contactconvenience.value))
{
// error code
}
答案 1 :(得分:0)
你必须在两个测试之间使用AND &&
而不是OR ||
:
if ((!callback.test(document.bookingsform.contactconvenience.value))
&&
(!callbackanytime.test(document.bookingsform.contactconvenience.value))) {
NOT(A OR B)&lt; =&gt;不是A而不是B
您还可以使用唯一的正则表达式:
/^\d{2}:\d{2}|\s*anytime\s*$/;