场景:前端验证-手机号码必须是数字,必须以'02‘开头,至少有8个?数字字符,限制为13?数字字符
示例:
MSISDN errorMessage 021123请输入有效的沃达丰手机号码091234567请输入有效的沃达丰手机号码02112345678910请输入有效的沃达丰手机号码abcdefghijkl请输入有效的沃达丰手机号码021$123456请输入有效的沃达丰手机号码
此外,当我在输入字段中输入数字时,数字的格式应为021 055555。前三个数字后有空格。
有没有人能帮我形成这种例子的正则表达式?
发布于 2019-03-21 16:47:22
这类东西会有所帮助的。
input.match(/^02[0-9]{6,11}$/)说明:输入显然就是输入。^确保这是要匹配的字符串的开始位置。[0-9]表示后续字符必须在0到9之间,{6-11}表示这些字符可以重复6到11次。末尾的$表示字符串必须在这里结束。
发布于 2019-03-21 16:44:57
我相信这个正则表达式将执行您需要的匹配:
const numbers = [
"023 45678901",
"023 456789012",
"023 4567890123",
"033 45678901",
"013 45678901",
"013 45",
"013 45678901234567",
]
const numberIsValid = number => !!number.match(/02\d\s\d{5,10}/)
console.dir(numbers.map(numberIsValid))
下面是正则表达式的每个部分所做的工作:
02按字面匹配字符02 (区分大小写)
\d匹配一个数字(等于0-9)
\s匹配任何空格字符(等于\r\n\t\f\v )
\d{5,10}匹配一个数字(等于0-9)
{5,10}量词-匹配5到10次,尽可能多,按需回馈(贪婪)
https://stackoverflow.com/questions/55276474
复制相似问题