2014-03-25 21 views
0

對於正則表達式,我是一個完整的新手。即使閱讀了關於他們的指南,我仍然很難制定我自己的。我試圖讓我的表單以+12345678910格式驗證傳真號碼。我有一些代碼,但它允許我提交混合的數字和字母,以及使用空格提交數據,並且完全不填寫faxnum文本框。我非常感謝任何關於如何更精通正則表達式的幫助。用JavaScript註冊表格驗證傳真號碼的正則表達式

var fax = document.registration.faxnum; 
faxval(fax); 

function faxval(fax) 
{ 
    var numbers = /[\+? *[1-9]+]?[0-9 ]+/; //Bad regex 
    if (fax.value.match(numbers)) 
    { 
     document.getElementById("faxmsg").innerHTML=("Everything is OK."); 
     faxmsg.style.color="green"; 
    } 
    else 
    { 
     faxmsg.innerHTML=("Invalid fax number."); 
     faxmsg.style.color="red"; 
    } 
}; 
+0

我建議您尋找一個好的傳真號碼,而不是一個壞的 –

+0

您正確使用方括號。試試'/(\ +?* [1-9])?[0-9] + /'也許吧? –

+0

@squeamishossifrage不幸的是,這給了我相同的結果。 – user3361043

回答

1

要匹配一個數字,如12345678910,請嘗試:\+1[2-9][0-9]{9}

我假設+1部分是國際數字代碼,234是區號,567是交換和8910是休息的數字。這種模式也會匹配一個數字,例如+12125551212。

任何美國或加拿大電話號碼的第一個數字必須是2到9.所以我們可以允許它作爲第一個字符([2-9])。然後剩下的數字將是9位長,0到9([0-9]{9})。

如果你想允許 - 或。您也可以使用:\+1(|\.|\-)[2-9][0-9]{2}(|\.|\-)[0-9]{3}(|\.|\-)[0-9]{4}(|\.|\-)部分的意思是「不允許字符或a。字符或a - 字符」。

+0

我嘗試了你的第一個正則表達式,但是我的表單完全停止工作。現在我正在使用squeamish的/ ^(\ +?* [1-9])?[0-9] + $/regex,但它仍然允許我提交不完整的數據。我需要一個解決方案,將用戶限制爲+12345678910格式,而不是其他任何內容。 – user3361043

+1

如果你還沒有試過,試試用/ pattern delimeters包裝它:'/ \ + 1 [2-9] [0-9] {9} /'或'/\+1(|\.|--) [2-9] [0-9] {2}(| \。| \ - )[0-9] {3}(| \。| \ - )[0-9] {4} /' – webinista

+0

忘記了分隔符。謝謝,這工作。 – user3361043