2011-02-14 50 views
0

試圖通過JQuery和驗證插件做一些JavaScript表單驗證。YA Javascript正則表達式問題

我在做自定義的驗證規則,有這麼大的匹配這個規則...

A-z 0-9 - _ ' & . 

基本上,我想不通了「&的輸入值。部分。這裏是我現在有...

/^[A-z0-9_]+(-)+$/i 

...我不知道這是理想的任何手段,它適用於它的涵蓋範圍。

但是,以上的字符進行正則表達式測試的最佳方法是什麼?謝謝。

+0

爲了我們明白你想要什麼,你能給我們一個情侶輸入/輸出例子? – 2011-02-14 19:31:34

+2

你是否意識到你的'[A-Z]'沒有做到你認爲的那樣? – tchrist 2011-02-14 20:04:49

回答

2

如果你想匹配您的任何上述匹配標準,那麼任意次數下面的代碼應該工作:

/^[a-zA-Z0-9&_.\-']+$/ 

我已經包括下面的一些例子測試當模式應該是有效的或無效的註釋中注意:

<script type="text/javascript"> 
    //A-z 0-9 - _ ' & . 
    //valid 
    var test_string = "This'Is'-Val1d&_."; 
    if (test_string.match(/^[a-zA-Z0-9&_.\-']+$/)){ 
     alert("first test matched"); 
    }else{ 
     alert("first test did not match"); 
    } 

    //invalid - whitespace not allowed 
    test_string = "This IsNot- Va'l1d & _ ."; 
    if (test_string.match(/^[a-zA-Z0-9&_.\-']+$/)){ 
     alert("second test matched"); 
    }else{ 
     alert("second test did not match"); 
    } 

    //invalid - ! is not allowed 
    test_string = "'ThisIsNotValid!'"; 
    if (test_string.match(/^[a-zA-Z0-9&_.\-']+$/)){ 
     alert("third test matched"); 
    }else{ 
     alert("third test did not match"); 
    } 

</script> 
1

this你想要什麼?

var regex = /^[a-z0-9_\-.'&]/i; 
+0

你應該包括代碼作爲你的答案的一部分,以及jsfiddle鏈接。 – Anurag 2011-02-14 19:30:59

+0

@Auurag添加代碼。請記住在將來這樣做 – Nalum 2011-02-14 19:34:54

0

不能完全確定我明白你想匹配的內容,但它看起來像你想要的字母,數字或符號-_'&.的任意組合。如果是這樣的情況下,使用此:

/^[-\w.'&]+$/ 

注意,+可以被刪除或取決於你想要多少個字符,以配合*取代。


編輯 - 這意味着什麼一點解釋:

  • [- - 當-是在開頭的字符類使用,它算作文字-。如果它在[]括號內使用other than right at the beginning or end of the class,則表示範圍如A-Z0-9
  • \w - 匹配任何字母,任意數字或_符號。這通常相當於[a-zA-Z0-9_]
  • .'& - 在字符類中,除了文字字符以外,它們沒有特殊含義。
  • + - 意味着「至少一次」。如果要允許空字符串,可以將其替換爲*,如果只需要一個字符,則將其刪除,或使用{8}等量詞。

More info at regular-expressions.info.