2

JavaScriptでオーストラリアの電話番号(02[3-9]\d{7}または07[3-9]\d{7} または)を検証する必要があります。04[\d]{8}

要件:

  • 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>

誰かが助けることができますか?

4

5 に答える 5

9

これが私がお勧めする正規表現です

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

したがって、入力は0で始まり、その後に数字が続く必要があり、0〜8の間の1つである必要があります。次に、さらに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;
       }
     ..........
于 2013-03-24T06:40:26.717 に答える
4

これについてPaulFerrettに感謝します(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);
}

注意:「MITライセンス」

于 2014-01-04T01:18:38.663 に答える
0

JavascriptのRegExpオブジェクトとRegExptest()メソッドを見てください。

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
于 2013-03-24T06:36:03.697 に答える
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

于 2013-03-24T07:21:57.710 に答える
0

これは、より堅牢なオーストラリアの電話正規表現です。このSOの質問の礼儀。

let phonePattern = /^(?:\+?(61))? ?(?:\((?=.*\)))?(0?[2-57-8])\)? ?(\d\d(?:[- ](?=\d{3})|(?!\d\d[- ]?\d[- ]))\d\d[- ]?\d[- ]?\d{3})$/

テスト:

0412123123      TRUE
0491579999      TRUE
0491572983      TRUE
0712122123      TRUE
0212122123      TRUE
0000000000      FALSE
5555551234      FALSE
04121231231     FALSE
041212312       FALSE
于 2022-02-15T10:18:00.413 に答える