在 Javascript 中验证(澳大利亚)电话号码
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/15595819/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Validate (Australian) Phone Numbers in Javascript
提问by Webnerdoz
I need to validate Australian phone numbers (e.g. 02[3-9]\d{7}
or 07[3-9]\d{7}
or 04[\d]{8}
) in JavaScript.
我需要在 JavaScript 中验证澳大利亚的电话号码(例如02[3-9]\d{7}
或07[3-9]\d{7}
或04[\d]{8}
)。
Requirements:
要求:
- must be 10 digits
- no commas
- no dashes
- no + in front
- must begin with 0
- 必须是 10 位数字
- 没有逗号
- 没有破折号
- 前面没有+
- 必须以 0 开头
At the moment I can validate required fields and email address but I want to add phone number validation.
目前我可以验证必填字段和电子邮件地址,但我想添加电话号码验证。
<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>
Can someone help out?
有人可以帮忙吗?
回答by Jason
Here is a regex that I would recomment
这是我推荐的正则表达式
var pattern = /^0[0-8]\d{8}$/g;
So input must start with 0, and followed by a digit and it must be one between 0-8. Then it must have 8 more digit numbers.
所以输入必须以0开头,后跟一个数字,并且必须是0-8之间的一个。那么它必须有8位以上的数字。
Valid phone number examples:
有效电话号码示例:
0010293999 (ok)
0010293999(确定)
0110293999 (ok)
0110293999(确定)
0210293999 (ok)
0210293999(确定)
0910293999 (nope)
0910293999(没有)
//Implementation
//执行
........
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;
}
..........
---- Edit
- - 编辑
........
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;
}
..........
回答by ErichBSchulz
Thanks to Paul Ferrettfor this (php not js, but the regex should translate):
感谢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 License"
注意:“麻省理工学院许可证”
回答by Aiias
Take a look at the Javascript RegExp Objectand RegExp test()
method.
看一看 Javascript RegExp Object和 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
回答by Dan
You can also use the required pattern.
您还可以使用所需的模式。
I've never used it before but it looks like this:
我以前从未使用过它,但它看起来像这样:
<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.
See this html5rocks article for more info: http://www.html5rocks.com/en/tutorials/forms/html5forms/#toc-validation
有关详细信息,请参阅此 html5rocks 文章:http://www.html5rocks.com/en/tutorials/forms/html5forms/#toc-validation