三天不练手生,很久没用正则,都忘了,今天又遇到了javascript正则表达式,有必要重拾起来巩固一下。
**定义字符集:**
[a-z] 表示a到z这26个小写字母之间某一个;
[A-Z] 表示A到Z这26个大写字母之间某一个;
[0-9] 表示0到9之间某一个数字;
[cbd] 表示cbd三个字母任意匹配一个;
**特别字符:**
^ 表示字符串的开始位置;
$ 表示字符串的结束位置;
() 标记一个子表达式的起始结束位置;
* 表示其前面单元出现0次或多次,任意次;
? 表示其前面单元出现0次或1次;
+ 表示其前面单元出现1次或1次以上;
. 表示匹配除换行符\n以外的任何单字符;
\ 用于转义;
| 用于两项之间的一个选择(前或者后);
**模式修正符:**
i 忽略大小写
g 全局匹配
m 把匹配内容视为多行
**组合字符:**
\d 表示数字[0-9];
\D 表示非数字[^0-9];
\w 表示字母,数字,下划线[a-zA-Z0-9_];
\W 表示非字母数字下划线[^a-zA-Z0-9_];
\s 表示任何不可见字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v];
\S 表示任何可见字符,等价于[^ \f\n\r\t\v];
\b 表示单词边界;
\B 表示非单词边界;
**限定字符:**
{m} 其前一单元严格出现m次;
{m,} 其前一单元至少出现m次;
{m,n} 其前一单元出现至少m次,最多n次;
**正向预查(javascript没有反向预查,php有):**
(?=pattern) 正向肯定预查;
(?!pattern) 正向否定预查;
(pattern) 匹配并获取匹配;
(?:pattern) 匹配但不获取;
[\u4e00-u9fa5] 中文汉字的unicode编码的范围,匹配中文;
[^\x00-\xff] 匹配双字节字符(包括汉字在内);