2015-04-16 14 views
-5

所以我最近教我自己jQuery,我剛剛來到AJAX的章節。有一個例子顯示瞭如何檢查電話號碼的驗證,我不知道發生了什麼以及它是如何工作的。下面是代碼片段:此電話號碼驗證是如何工作的?

// Validate a phone number field 
$("#form").submit(function(event) { 
    var inputtedPhoneNumber = $("#phone").val(); 

    // Match only numbers 
    var phoneNumberRegex = /^\d*$/; 

    // If the phone number doesn't match the regex 
    if (!phoneNumberRegex.test(inputtedPhoneNumber)) { 

     // Usually show some kind of error message here 

     // Prevent the form from submitting 
     event.preventDefault(); 
    } else { 

     // Run $.ajax() here 
    } 
}); 

我不明白的是:

var phoneNumberRegex = /^\d*$/; 

我做了一些研究,電話號碼驗證,這一切都有這樣的:一對「//「和他們之間的一些東西,我從來沒有見過這個,任何人都可以解釋這裏發生了什麼,爲什麼它有效?任何幫助將不勝感激,謝謝!

+0

你可能想玩:http://lea.verou.me/regexplained/ – nobe4

+0

它只是檢查,看看它是所有的數字。沒有其他的。那個「d」是什麼的簡寫。 – dgig

+0

\ d與[0-9]類似,^表示以$表示結束,在這種情況下爲數字。 *表示零次或多次出現 – AAB

回答

0

/^\d*$/簡單地匹配以(^)的數,含有的位數的任意量(\d*)開始,並且也與多個($)結束的字符串。

2

在JavaScript中,可以通過在兩個/斜線字符之間放置正則表達式模式來定義正則表達式。

在您的例子的情況下,正則表達式模式是指:

  • ^ - 啓動從所述串序列的一開始相匹配;
  • \d* - 匹配零個或多個數字字符0-9;
  • $ - 保持匹配,直到字符串序列的最後。

簡言之,這種模式要求整個字符串序列只包含數字字符而沒有別的。

生成的正則表達式對象然後可以調用字符串序列上的test函數來測試該序列是否適合該模式,並且只有在字符串序列與正則表達式完全匹配時纔會計算爲真。

0

http://regexr.com/3ar56 - 這會讓你知道正則表達式的作用。

var phoneNumberRegex = /^\d*$/; 

上面的代碼將變量phoneNumberRegex設置爲正則表達式語句。該聲明的確在它自己的什麼都沒有,但

!phoneNumberRegex.test(inputtedPhoneNumber) 

告訴它測試變量inputtedPhoneNumber,看它是否沒有被格式化的正則表達式聲明表明,它應該是這樣。 ^\d看它是否以數字開頭*表示它將接受任何數字的前一個正則表達式屬性,在這種情況下爲\d,它測試一個數字。 $指出,當給出最後一位數字時,它應該停止匹配。如果你在號碼後面加一個空格,它將不匹配。

所以這個:^/d*$

說: 如果它以數字開頭收集第一個數字和數字字符串的結束之間的所有內容。

如果輸入的PhoneNumber中的字符串沒有指定的格式,它將不匹配。