簡體   English   中英

JavaScript-用於時間或特定字符串的RegEx

[英]JavaScript - RegEx for time or a specific string

在我的表單中,我有一個字段,詢問用戶他們希望我什么時間給他們打電話。

輸入的代碼如下(不包括<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; 另一個用於匹配“隨時”的特定字符串。

在函數本身中,我使用的是|| 看看if任一RegExs的已匹配與否。

注意:我知道我使用的是onchange而不是onsubmit<form>標簽由調用onsubmit組成。

假設午夜00:00;

var callback = /^(([01]\d|2[0-3]):([0-5]\d)|anytime)$/;

if (!callback.test(document.bookingsform.contactconvenience.value))
{
   // error code
}

您必須使用AND &&而不是OR || 兩次測試之間:

if ((!callback.test(document.bookingsform.contactconvenience.value)) 
    && 
    (!callbackanytime.test(document.bookingsform.contactconvenience.value))) {

非(A或B)<=>非A和非B

您還可以使用唯一的正則表達式:

/^\d{2}:\d{2}|\s*anytime\s*$/;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM