2014-03-19 26 views
-2

我是新來的正則表達式,並有一個問題。我正在驗證日期/時間文本輸入,並且只想允許符合精確模式的字符。這是格式:只允許遵循準確的正則表達式模式的字符

2014年3月19日上午2:00

顯然日期(在這種情況下 「19」)和時間(在這種情況下, 「2」)可能是一個或兩個字符長。在Javascript的關鍵字,我需要一個正則表達式,刪除所有不完全適合這種模式的字符。我如何用正則表達式來做到這一點?這是確切的圖案:

  • 3字母字符
  • 然後一個空間
  • 然後一個1個或2 diget數
  • 然後昏迷後跟另一個空間
  • 然後一個四位數字
  • 然後另一個空間
  • 然後單詞「在」後面是另一個空間
  • 然後一個1或2位數字
  • 然後冒號。
  • 那麼2位數
  • 那麼無論是單詞「AM」或「PM」

我不在乎,這是一個有效的日期。我只需要輸入的文本來適應這種格式。

謝謝你的幫助!

+2

聽起來像一個壞主意,因爲這會妨礙正常的編輯操作(例如,首先進入的時間) – sabof

+0

由於有日期選擇器,因此時間已經在文本框中。我只是想允許手動編輯。 –

+1

echo @sabof;不可能在密鑰上驗證完整的正則表達式。如果你不斷刪除一切onkeyup ..用戶將永遠無法輸入一個完整的驗證字符串 –

回答

1
[A-Za-z]{3}\s\d{1,2},\s\d{4}\sat\s\d{1,2}:\d{2}(am|pm) 

會符合您的要求,正是

演示在這裏:http://regex101.com/r/rU8xT0 \

與JS

var str = "Mar 1, 2014 at 2:00pm"; 
if(/[A-Za-z]{3}\s\d{1,2},\s\d{4}\sat\s\d{1,2}:\d{2}(am|pm)/.test(str)){ 
    console.log("pass"); 
} 
else{ 
    console.log("fail"); 
} 

使用,這是你想要的,這將檢查這是價值觀到底是什麼不正確,並相應地突出顯示,我正在使用jquery添加和刪除類

$("#text").keyup(function() { 
    if (/[A-Za-z]{3}\s\d{1,2},\s\d{4}\sat\s\d{1,2}:\d{2}(am|pm)/.test($(this).val())) { 
     $(this).removeClass('error'); 
     $(this).addClass('good'); 
    } else { 
     $(this).removeClass('good'); 
     $(this).addClass('error'); 

    } 
}) 

爲有機磷農藥在JS特殊要求

var str = "Mar 1, 2014 at 2:00pmaur bahut sara kachra"; 
var res = str.replace(/([A-Za-z]{3}\s\d{1,2},\s\d{4}\sat\s\d{1,2}:\d{2}(am|pm)).*/, '$1'); 
console.log(res); 

小提琴演示在這裏:http://jsfiddle.net/kq65X/1/

+0

這看起來不錯!我不經常使用正則表達式,如何使用Javascript的.replace()函數去除所有不適合這種模式的字符?謝謝! –

+0

檢查我的更新答案,如果您有任何其他疑問,請諮詢 – aelor

+0

正如我上面所說的,我實際上需要刪除所有不符合該模式的字符,而不僅僅檢查輸入是否符合模式。謝謝! –

相關問題