两个正则表达式的组合

Combination of two regex

我正在使用表单验证器来验证我的注册表单上的某些字段。其中之一是电话字段,我为此准备了两个可提供验证的正则表达式。

regexp: {
regexp: 
>/(^01|^02|^071|^073|^074|^075|^076|^077|^078|^079)/, 
         /^((?!(012345|123456|234567|345678|456789|0{6,}|1{6,}|2{6,}|3{6,}|4{6,}|5{6,}|6{6,}|7{6,}|8{6,}|9{6,})).)*$/

message: 'The phone number is not valid'
                    }

我的问题是这两个中只有一个可以工作,而不是两个都可以。知道如何修改它以使它们都起作用吗?

您可以像这样将两者结合起来:

/^(?=(01|02|071|073|074|075|076|077|078|079))((?!(012345|123456|234567|345678|456789|0{6,}|1{6,}|2{6,}|3{6,}|4{6,}|5{6,}|6{6,}|7{6,}|8{6,}|9{6,})).)*$/

对我来说,这似乎是一种混淆方式来执行一些相当简单的检查,但对每个人来说都是如此。

这个正则表达式可以工作,但我仍然建议可能找到不同的方法或一组标准来验证。不过这取决于你。

/^(0(?:[12]|7[145789]))(?!012345|123456|234567|345678|456789|0{6,}|1{6,}|2{6,}|3{6,}|4{6,}5{6,}|6{6,}|7{6,}|8{6,}|9{6,})/

这将确保号码以正确的前缀开头,并且不包含您指定的序列。