2013-03-24 68 views
2

我需要在JavaScript中驗證澳大利亞電話號碼(例如02[3-9]\d{7}07[3-9]\d{7}04[\d]{8})。使用Javascript驗證(澳大利亞)電話號碼

要求:

  • 必須是10位數字
  • 沒有逗號
  • 沒有破折號
  • 沒有+前面
  • 必須以0

在開始我可以驗證所需的時刻字段和電子郵件地址,但我想添加電話號碼驗證。

<html> 
<head> 

<script type="text/javascript"> 
function validateForm() { 
var x=document.forms["form3"]["name"].value; 
if (x==null || x=="") { 
    alert("Name must be filled out"); 
    return false; 
} 
var s=document.forms["form3"]["phone"].value; 
if (s==null || s=="") { 
    alert("Please Enter your Phone or Mobile Number - Preferably Phone Number"); 
    return false; 
} 
var s=document.forms["form3"]["email"].value; 
if (s==null || s=="") { 
    alert("Please Enter a valid email address"); 
    return false; 
} 
var k=document.forms["form3"]["email"].value; 
var atpos=k.indexOf("@"); 
var dotpos=k.lastIndexOf("."); 
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=k.length) { 
    alert("Email Address is Not Valid. Please provide your correct email address."); 
    return false; 
} 
} 
</script> 
</head> 
<body> 

<form action="/thank-you.php" name="form3" method="post" onsubmit="return validateForm();" > 
Your name* <input type="text" name="name" />  
Phone number* <input type="text" name="phone" /> 
Email* <input type="text" name="email" /> 
<input type="submit" value="sumbit" name="submit" class="button" onclick="javascript:return validateMyForm();" /><input type="reset" value="Reset" class="resetbutton" /> 
</form> 

</body> 
</html> 

有人可以幫忙嗎?

+1

請注意,你不能依賴客戶端數據(甚至不是客戶端驗證的數據) – 2013-03-24 10:04:22

+2

@kaᵠ客戶端驗證以及服務器端驗證會更好,因爲如果客戶端驗證失敗,它將不會要提交可能會保存一些HTTP請求。 – Jason 2013-03-24 11:48:27

+1

@EnglishMaster改進用戶體驗也是因爲(真正的)用戶更願意知道那裏的任何錯誤,而不是在網站花時間處理頁面並返回結果之後。 – 2016-05-15 14:27:54

回答

8

這裏是我會電子書籍

var pattern = /^0[0-8]\d{8}$/g; 

所以輸入必須以0開始,後面跟着一個數字,它必須是0-8之間的一個正則表達式。那麼它必須有8位數字。

有效的電話號碼的示例:

0010293999(OK)

0110293999(OK)

0210293999(OK)

0910293999(沒)

//實施

........ 
var phoneNumber =document.forms["form3"]["phone"].value; 
var phonePattern = /^0[0-8]\d{8}$/g; 
//phone number is not valid. Please notice that you don't need to check if it's empty or null since Regex checks it for you anyways 
if (!phoneNumber.test(phonePattern)) 
    { 
    alert("Please Enter your Phone or Mobile Number - Preferably Phone Number"); 
    return false; 
    } 
.......... 

----編輯

........ 
    var phoneNumber =document.forms["form3"]["phone"].value; 
    var phonePattern = /^0[0-8]\d{8}$/g; 
    //phone number is not valid. Please notice that you don't need to check if it's empty or null since Regex checks it for you anyways 
    if (!phonePattern.test(phoneNumber)) 
     { 
     alert("Please Enter your Phone or Mobile Number - Preferably Phone Number"); 
     return false; 
     } 
    .......... 
+0

Nah沒有工作。只是添加了您的代碼,但它發送的網絡消息沒有驗證所有字段。 – Webnerdoz 2013-03-24 08:24:56

+0

我以爲你問的是數字的正則表達式? – Jason 2013-03-24 09:47:43

+2

我很抱歉,示例代碼中存在一個小錯誤。它必須是!phonePattern.test(phoneNumber)而不是!phoneNumber.test(phonePattern) – Jason 2013-03-24 09:55:57

0

看看JavaScript的RegExp Object和正則表達式test()方法。

var patt = /04[\d]{8}/g; // Shorthand for RegExp object 

var phoneNumber1 = '0412345678'; 
var result1 = patt.test(phoneNumber1); // result1 is true 

var phoneNumber2 = 'abc'; 
var result2 = patt.test(phoneNumber2); // result2 is false 
0

您還可以使用所需要的模式。

我以前從未使用過它,但它看起來是這樣的:

<input type="text" 
    id="phoneNumber" 
    title="Phone numbers must be 10 digits and start with 0." 
    required pattern="0[::digit::]{10}" 
/> 

// It's late, no idea if that's a valid regex or if works with POSIX. 

看到這個HTML5ROCKS本文的詳細信息: http://www.html5rocks.com/en/tutorials/forms/html5forms/#toc-validation

+0

謝謝。這個就像一個魅力。問題是電話字段的錯誤消息是不同於其他JavaScript錯誤消息... – Webnerdoz 2013-03-24 08:37:13

+0

Nah第二個想法,這個通過IE瀏覽器填寫表單時不起作用。 – Webnerdoz 2013-03-24 08:55:32

+1

'所需模式='沒有什麼特別之處。這只是兩個屬性,'pattern ='和'required'。 – Eric 2013-03-24 09:59:04

4

感謝Paul Ferrett這個(PHP不是JS,但正則表達式應該翻譯):

<?php 
function validate_phone($number) { 
    $number = preg_replace('/[^\d]/', '', $number); 
    return preg_match('/^(0(2|3|4|7|8))?\d{8}$/', $number) 
    || preg_match('/^1(3|8)00\d{6}$/', $number) 
    || preg_match('/^13\d{4}$/', $number); 
} 

NB: 「MIT許可證」

相關問題