JavaScript - RegEx用于时间或特定字符串

时间:2014-01-31 15:11:28

标签: javascript html regex

在我的表格中,我有一个字段,询问用户他们希望我什么时候给他们打电话。

输入的代码如下(<form>标签除外):

<p>
   <label>When can we call you?:</label>
   <br>
   <input type="text" name="contactconvenience" placeholder="HH:MM or &#34;anytime&#34;" 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调用主函数。

2 个答案:

答案 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*$/;