普通字符
普通字符包括没有显示指定为元字符的所有可打印和不可打印字符。包括所有大小写字母、所有数字、所有标点符号和一些其他符号。
怎么判断一个长度为1的字符串是否为数字?
代码语言:javascript复制[0-9]
[]方括号表示这是一个字符组,代表一位字符。方括号中的数字0-9表示只要待匹配的最底层与其中的任何一个字符相同,程序就会认为匹配成功,反之则认为匹配失败
为什么是0-9而不是9-0?因为在ASCAII码中,0的码值较小,9的码值较大。码值小的在前,码值大的在后。
同样道理,判断一个长度为1的字符串是不是小写英文字母,可以写成
代码语言:javascript复制[a-z]
注意,我们不能用[A-z]来匹配所有的大小写英文字母。因为这个范围之中也包括了其他的特殊字符。正确做法是
代码语言:javascript复制[A-za-z]或者[a-zA-Z]
怎么判断一个长度为2的字符串是否为数字呢?其实,只要写两遍就好了
代码语言:javascript复制[0-9][0-9]
如果要判断用户输入的是Y或者y,只要这样写正则表达式:
代码语言:javascript复制[Yy]
当允许的字符范围只有一个的时候,可以省略[]。例如,要判断用户有没有输入Yes/yes,只要这样写
代码语言:javascript复制[Yy]es
字符转义
在上面我们表示数字范围时用的[0-9]之中的‘-’表示范围,并不表示字符’-‘本身,这类字符我们称之为元字符。这类字符在匹配之中有特殊含义。如果我们想要匹配’-‘本身的话,就要写成’-‘。其实,在正则表达式中,匹配元字符,就是在字符前面加上‘’。比如,匹配'[‘本身,就写成
代码语言:javascript复制[[]
匹配‘0’ ‘-’ ‘9’ 这三个字符,就写成
代码语言:javascript复制[0-9]
这样就只会匹配‘0’ ‘-’ ‘9’ 这三个字符
常见的元字符可以去查表。
分组构造
分组构造描述了正则表达式的子表达式,用来捕获字符串的子字符串。就是用括号括起来的
匹配模式
匹配模式是指匹配的时候使用的规则。用不同的匹配模式可能会改变正则表达式的识别,有可能会改变正则表达式中字符的匹配规定。
1、不区分大小写模式
2、单行模式
也叫做点号通配。会改变‘.’的匹配方式。默认情况下,元字符‘.’不会匹配换行符。有时候想匹配任何字符的时候,就可以使用单行模式来使得‘.’能匹配任何字符。
当然也可以使用[sS] [wW]等技巧来匹配所有字符。
3、多行模式
多行模式改变的是‘^’和‘$’的匹配方式。默认模式下,‘^’和‘$’匹配的是整个字符串的起始位置和结束位置。但是,在多行模式下,他们将会匹配字符串内部某一行文本的起始位置和结束位置。