前言
需求如下:
①允许使用 固定6位长度工号(纯数字)或者固定8位长度工号(纯数字)
②允许使用 ta加固定6位长度数字 的工号;
③允许使用 ft加6位到20位字符(这20位只能包含数字和英文字母) 的工号;
需要编写一个正则表达式,同时满足以上需求
正文
我对正则表达式了解比较少,遇到这样的需求,只能挨个解决,再将其合并在一起
用到的知识点如下所示
()
:提取匹配的字符串[]
:定义匹配的字符范围^
:开头$
:结尾|
:或者
满足需求①的正则表达式如下:
var reg = /^\d{6}(?:\d{2})?$/
// or
var reg = /^(\d{6}|\d{8})$/
满足需求②的正则表达式如下:
var reg = /^(ta)[0-9]{6}$/
满足需求③的正则表达式如下:
var reg = /^(ft)[a-z0-9]{6,20}$/
将所有的正则表达式合并为一个,如下所示:
var reg3 = /^((\d{6}|\d{8})|((ta)[0-9]{6})|((ft)[a-z0-9]{6,20}))$/
用()
、|
将所有的表达式连在一起便能满足上述所有的需求,所以正则表达式其实没那么难,你们觉得是吗?