[英]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 "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; 另一個用於匹配“隨時”的特定字符串。
在函數本身中,我使用的是||
看看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.