正则表达式的入门篇语法
所有非正则表达式约定的特殊字符外均表示自己,例如 '34' 表示 所有字符串是'34'的字符串,这显然只有'34'这一个字符串 (对于哪些是正则表达式约定的特殊字符 我们需要通过了解下面语法来记住)
'\d' 用于表示一个数字
'\w' 用于表示一个字母或数字,例如: '8' , 'x', 'd'
'\s' 用于表示一个空格 即 ' '
'.' 用于表示一个任意字符,例如: '8' , 'x', 'd', ' ', '=', '+', '{'
那么我们要表示连续三个数字呢,'\d\d\d' 显然是可以的,那么我要表所示连续100的数字呢,连续 100个'\d'就太复杂了,那怎么表示这个呢,类似于正则表达式中的乘法出现了 '\d{3}' 表示连续三个数字组成的字符串,例如 '123','111' 把这种语法应用于上面4种,情况得到:
'3{3}' 用于表示连续三个'3' 组成的字符串,显然只有 '333'
'\d{3}' 用于表示连续三个数字 组成的字符串,如: '123', '111'
'\w{3}' 用于表示连续三个数字或字母组成的字符换,如: 'qw1', '111'
'.{3}' 用于表示连续三个任意字符组成的字符串,如: 'xxx','x-1','=+<'
那么如果我们想要表示x~y个字符组成的字符串呢,于是出现了: '\d{2,5}' 用于表示2-5个数字组成的字符串 ,如'12', '1234', '34215' 同理:
'\w{1,10}'表示 1-10个字母组成的字符串 '.{2-8}' 表示 2-8个任意字符组的字符串, '1{3,7}' 表示 3-7个'1'组成的字符串
还要一个问题,如果我想表达至少1个,至多到无穷个的字符串呢,正则表达式有没有类似于∞的字符呢,其实是没有的,但有相似的:我们用 '' 表示 0-∞个,'+'表示1-∞个,如 '3' , '\d*' 分别表示0到无穷多个3组成的字符串,1到无穷个数字组成的字符串
ok,现在我们已经基本入门了正则表达式了,先在我们稍微在深入一点。首先解决的一个需求是,我们想表达只由1,2,3 这3个数字组成的怎么办:
'[123]{3,5}' 表示一个长度为3到5的字符串,其元素只能是元素集合 '1', '2', '3'的子集,其中 中括号 内表示的是可选的集合
然后我们想表示只由小写字目a到y这25个字母组成的任意长度字符串怎么办,我需要在正则表达式里写25个字母吗?显然不需要,于是:
'[a-y]*' 表示从a到y的集合的子集表示的任意长度的字符串
你应该常常见到 [0-9a-zA-Z]这种写法,则是表示一个数字或字母,类似于 '\w' 了 另外如果我想匹配一个 由'A'或'B'组成的字符串呢,其实我们用上面的知识可以写出来:'[AB]'则表示一个由A或B组成的一个字符串,有没有更方便的写法呢,于是
'A|B' 出现,表示一个匹配'A'或匹配'B'的表达式
另外常用的匹配行开始匹配结束的字符是 ^和$
作者:jojoshuai 链接:www.jianshu.com/p/597349ee5… 来源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。