需要一个正则表达式,以确保号码从01 02或08开始,长度为10或11位

use*_*865 3 javascript regex validation jquery

我很难记入一个正则表达式来检查一个数字是否以数字开头01,02或者08是十位或十一位数.

例如,我想要像这样格式化的数字传递:

01614125745
02074125475
0845895412
08004569321
Run Code Online (Sandbox Code Playgroud)

并编号其他形式失败,数字如下:

0798224141
441544122444
0925456754
Run Code Online (Sandbox Code Playgroud)

等等.基本上,任何不以01 02或开头的数字08.

Rob*_*b W 14

以下模式遵循以下标准:

/^(?=\d{10,11}$)(01|02|08)\d+/   # This pattern can easily be extended

/^(?=\d{10,11}$)0[128]\d{8,9}/   # Same effect
Run Code Online (Sandbox Code Playgroud)

说明:

^                Begin of string
(?=\d{10,11}$)   Followed by 10 or 11 digits, followed by the end of the string
(01|02|08)       01, 02 or 08
\d+              The remaining digits
Run Code Online (Sandbox Code Playgroud)

  • @Wiseguy我看到:"10或11位数,从......开始".出于这个原因,我决定采用一种易于重复使用和扩展的模式(如果添加以下标准:`或以112开头);) (2认同)

rid*_*ner 9

Rob W的回答是正确的.但是我会使用这样一个更简单的表达式:(不需要前瞻)

/^0[128][0-9]{8,9}$/
Run Code Online (Sandbox Code Playgroud)

  • 为什么有人会拒绝这个答案呢?它简单,快速,准确.去搞清楚... (4认同)