2014-11-24 36 views
1

我是新來的正則表達式,並試圖爲客戶編寫模式,以將自己的自定義詳細信息添加到產品。這個想法是一個允許客戶有多達3個字母數字字符和3個句號/期,例如這將是有效的條目:3個字母數字和3個滿檔的javascript正則表達式模式

abc 
ab 
a.b.c 
a..bc 
... 
a.b. 
etc 

,而這些將是無效的:

abcd (too many characters) 
a.... (too many .) 
abcd. (too many alphanumeric) 

到目前爲止,我已經得到了以下信息,但它不會檢測到字母和數字。交錯:例如。 「A.B.C」

下面是我在哪裏:

$(document).on('keyup', 'input.custom', function() { 
    currentText = $(this).val(); 
    reg = /^([a-zA-Z]{0,3})|([.]{0,3})$/igm; 
    if (currentText.match(reg)) { 
    console.log('match'); 
    } else { 
    console.log('no match');  
    } 
}); 

這感覺就像我接近,但缺少的東西很重要!

+2

以上正則表達式的問題,你覺得是接近和不符合標準? – SMA 2014-11-24 11:31:58

+0

我一直在使用http://regexr.com/來測試它的匹配,並且它匹配 aab ... aab。 abc 它不符合 a.b.c. a..bc – rossfev 2014-11-24 11:42:59

回答

1

使用如下所示的外觀。

^(?!(?:[^.\n]*\.){4,})(?!(?:[^A-Za-z0-9\n]*[A-Za-z0-9]){4,})(?=.*[A-Za-z.0-9]).*$ 

DEMO

說明:

  • (?!(?:[^.\n]*\.){4,})斷言有存在於一個字符串未4個或更多點。
  • (?!(?:[^A-Za-z0-9\n]*[A-Za-z0-9]){4,})斷言字符串中不存在4個或更多字母數字字符。
  • (?=.*[A-Za-z.0-9])斷言必須有字母數字或點存在。
  • 只有滿足上述所有條件時,才匹配相應的字符串。
+1

這是完美的,非常感謝你的解釋 - 它真的幫助我理解! – rossfev 2014-11-24 12:41:36

3

它更有意義,以配合:^ [A-ZA-Z0-9] {6} $(範圍可以用\ w如果允許強調以及更換)

再算上並確保它是3.

相關問題