下面这一段正则表达式应该怎样解读
发布时间:2025-05-24 21:31:36 发布人:远客网络
一、下面这一段正则表达式应该怎样解读
1、^(https?:\/\/)?-----行首的(https?:\/\/)可有可无,但?:\/\/是什么意思呢?
2、\/\/表示"//"即匹配https://,因为整个正则是用两个/作为边界的,如果不将/用\/转义,那么/会作为正则结束的标记
3、([\da-z\.-]+)\.------([数字小写字母.-]若干个).但这里的()是否可以删除,为什么要()?
4、这个括号对整个匹配没有作用,完全多余,删除就删除吧
5、([\/\w\.-]*)*\/?$/-----([/单词字符.- ]若干)若干/可有可无行尾但-就表示-吗?
6、-在中括号的开始和末尾就表示-字符本身,在中间表示字符的范围如[a-z]
二、正则表达式必须包含字母数字和特殊字符
正则表达式要实现必须包含字母数字和特殊字符,那么,我们就必须判断该字符串中:
为了简化问题,这里对特殊字符做下限定,指:_-@&=,大家在实际应用中,可以自行扩充这个限定的字符区间。
^(?=.*?[a-z])(?=.*?[0-9])(?=.*?[_\-@&=])[a-z0-9_\-@&=]+$
当然,如果需要限定字符串长度,我们后面的[a-z0-9_\-@&=]+可以改为一个长度范围,如6-16:[a-z0-9_\-@&=]{6,16}
下面我们来解读一下上面的正则:
正则以^开始,限定匹配字符串是从开始位置进行匹配,(?=.*?[a-z])是肯定型顺序环视,限定当前位置的后面,能匹配.*?[a-z],也就是,能够匹配到一个字母,同理,(?=.*?[0-9])表示限定当前位置的后面,能匹配一个数字,(?=.*?[_\-@&=])表示限定当前位置的后面,能匹配一个特殊字符,而[a-z0-9_\-@&=]+就是前面那些环视限定的位置,即表示[a-z0-9_\-@&=]+中,至少匹配一个字母、一个数字、一个特殊字符,最终匹配到达字符串结束位置$。