Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于验证邮政编码和电话号码的正则表达式_Javascript_Regex - Fatal编程技术网

Javascript 用于验证邮政编码和电话号码的正则表达式

Javascript 用于验证邮政编码和电话号码的正则表达式,javascript,regex,Javascript,Regex,我正在创建一个带有警告元素的表单。所有这些都很好,但需要更好地定义我的模式 $("#postcode").inputNotes( { warning: { pattern: /^[0-9]+$/, type: 'note', text: 'Only numbers, please ...',

我正在创建一个带有警告元素的表单。所有这些都很好,但需要更好地定义我的模式

                $("#postcode").inputNotes( 
              {
                warning: {
                  pattern: /^[0-9]+$/,
                  type: 'note',
                  text: 'Only numbers, please ...',
                  inversedBehavior: true
                }
              }
            );
            $("#phone").inputNotes( 
              {
                warning: {
                  pattern: /^[0-9]+$/,
                  type: 'note',
                  text: 'Only numbers, no spaces please ...',
                  inversedBehavior: true
                }
              }
            );
好的,对于邮政编码警告,我希望模式预期为4个数字

对于电话警告,我希望模式预期为10个数字


感谢您的帮助。

请尝试使用
{num}
,而不是使用
+
修饰符,其中
num
是您想要的上一个atom的实例数。

更新:

对于6位或10位数字:
模式:/^[0-9]{10}|[0-9]{6}$/,

对于四位邮政编码:
模式:/^[0-9]{4}$/,

对于10位电话号码: (如果电话号码不能以0开头)
模式:/^[1-9][0-9]{9}$/,

(如果电话号码可以以0开头)
pattern://^[0-9]{10}$/,

对于4位邮政编码,您可以使用
/^\d{4}$/

对于10位邮政编码,您可以使用
/^\d{10}$/


请记住,有些人会在电话号码中键入空格、括号等。在使用
/[^\d]+/g

进行验证之前,应首先去除所有非数字。以下是澳大利亚邮政编码的规则:

法案:0200-0299和2600-2639

新南威尔士州:1000-1999、2000-2599和2640-2914

新界:0900-0999及0800-0899

QLD:9000-9999和4000-4999

SA:5000-5999

助教:7800-7999和7000-7499

维也纳国际中心:8000-8999和3000-3999

WA:6800-6999和6000-6799

正则表达式:^(0[289][0-9]{2}|([1345689][0-9]{3}|(2[0-8][0-9]{2}|(290[0-9])|(291[0-4])|(7[0-4][0-9]{2}|(7[8-9][0-9]{2}$

通行证:0200 | | | | 7312 | | | 2415


失败:0300 | | | 7612 | | | 2915

澳大利亚邮政在2019年大大简化了规则。 您现在只需要考虑范围:
0200-0299、0800-0999和1000-9999

因此,验证澳大利亚邮政编码的正则表达式为:

^(0[289][0-9]{2})|([1-9][0-9]{3})$

所有这些答案都假设您将文本字段限制为4个字符,例如(12345)是有效的,要限制长度,请使用以下命令

^(0[289][0-9]{2})$|^([1-9][0-9]{3})$

为了节省人们的时间,这里有一个如何在jquery中使用的示例

 $("#address-postal-code").once().on('blur', function (e) {
    var myRegEx = new RegExp('^(0[289][0-9]{2})|([1-9][0-9]{3})$');
    var ele = $(this);
    if (!myRegEx.test(ele.val())) {
        console.log('no good');
    }
    else {
        console.log('good');
    }
})

为什么电话号码不能以
0
开头呢?非常感谢,先生Brilliant@alex:未看到任何以0开头的10位电话号码。以便笺形式更新帖子,以防号码确实存在。手机号码以0开头,我们要求用户键入以01、02开头的州前缀(澳大利亚)etc@Cybernate如果I和@422来自(澳大利亚),手机号码以
0
开头(除非使用国家代码前缀,例如
+61
).欢呼声在我的旁注中加入了这一点,作为我的回答:)Thnaks,那么你的正则表达式和@cybernate有什么区别呢?现在我真的confused@422其实不是很多,我只是用
\d
简写
[0-9]
字符类,我的允许一个前导
0
。Gottya将在其他正则表达式上使用它,很好。我第一次玩这个…更新了当前邮政编码范围的正则表达式(截至2019年):
^(0[289][0-9]{2})|([123456789][0-9]{3})$