2017-10-14 59 views
0

我試圖驗證表單除其他事項外,以檢查用戶又增加了一個有效的愛爾蘭移動應該有083,085,086,087,089開始,在長度爲十位愛爾蘭的JavaScript正則表達式移動

我看着Validate an Irish mobile phone number但我不能得到它的工作

我檢查功能

function CheckPhone(pNumb) { 
    var paswd=/08[3679]-\d{0,10}$/; 
    return paswd.test(pNumb);} 

哪裏嘗試驗證

if(!CheckPhone(d)) 
     { 
      alert("You have not entered a valid Irish mobile number"); 
      document.getElementById('phoneNumber').focus(); 
      return false;  
     } 

但即使有一個有效的號碼,我被告知該條目無效。我確定我做錯了什麼,但我是新來的正則表達式,而不是程序員,所以不知道是什麼。

作爲對Jayce444的迴應,我編輯了我的問題以包含完整的腳本,因爲當我添加checkphone函數時,它會導致電子郵件和密碼功能被忽略,並且表單被提交時存在這些字段的無效值,例如輸入密碼

<script> 

function validateEmail(email) { 
    var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
    return re.test(email); 
} 
function CheckPassword(inputtxt) { 
    var paswd=/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,20}$/; 
    return paswd.test(inputtxt); 
} 
function CheckPhone(pNumb) { 
    var paswd=08[3679]-\d{7}$; 
    return paswd.test(pNumb); 
} 
function validateForm() { 
    var a=document.forms["subForm"]["firstName"].value; 
    if (a===null || a==="") 
     { 
      alert("All fields in the form are required You must enter your first name"); 
      document.getElementById('firstName').focus(); 
      return false; 
     } 
    var b=document.forms["subForm"]["lastName"].value; 
    if (b===null || b==="") 
     { 
      alert("All fields in the form are required You must enter your last name"); 
      document.getElementById('lastName').focus(); 
      return false; 
     } 
    var c=document.forms["subForm"]["email"].value; 
    if (c===null || c==="") 
     { 
      alert("All fields in the form are required You must enter your email address"); 
      document.getElementById('email').focus(); 
      return false; 
     } 
     if(validateEmail(c)===false) 
     { 
      alert("You must enter a valid email address"); 
      document.getElementById('email').focus(); 
      return false;  
     } 
     var d=document.forms["subForm"]["phoneNumber"].value; 
     if (d===null || d==="") 
     { 
      alert("All fields in the form are required You must enter your phone number"); 
      document.getElementById('phoneNumber').focus(); 
      return false; 
     } 
     if(CheckPhone(d)===false) 
     { 
      alert("You have not entered a valid Irish mobile number"); 
      document.getElementById('phoneNumber').focus(); 
      return false;  
     } 
     var e=document.forms["subForm"]["password"].value; 
     if (e===null || e==="") 
     { 
      alert("All fields in the form are required You must enter a password"); 
      document.getElementById('password').focus(); 
      return false; 
     }  
     if(CheckPassword(e)===false) 
     { 
      alert("You have not entered a valid password"); 
      document.getElementById('password').focus(); 
      return false;  
     } 

} 
</script> 

回答

2

此正則表達式的工作原理測試@測試和P2:

08[3679]-\d{7}$ 

順便說一下這個網站:https://regex101.com/是很好的幫助測試正則表達式,看看他們實際上做什麼。你的第二部分,\d{0,10}說「匹配0到10位數字」。你想要的是匹配破折號後的7位數字。

+0

謝謝,但這打破了我的驗證,它提出了檢查電子郵件和密碼功能失敗。失敗的腳本的完整代碼。 我會嘗試編輯我的問題,因爲我不能在評論中發佈代碼 – Graham

+0

那麼你是否說現在的電話號碼驗證工作,但電子郵件和密碼驗證不是? Cos是一個單獨的問題 – Jayce444

+0

與正則表達式和檢查代碼就位,驗證失敗的密碼和電子郵件。 我還沒有測試只是正則表達式和手機檢查代碼,但稍後會這樣做,並會確認 – Graham