元字符
([{+*?.$^|
字符类
简单类
原则上正则的一个字符对应一个字符,我们可以用[]把它们括起来,让[ ]这个整体对应一个字符。1
2
3/caicai/.test("caicai") //true
/[ca]i/.test("caicai") //true
"caicai".match(/[ca]i/) // ["ai"] 因此说明匹配不了cai整个字符,只能匹配[]中的一个字符和外边的i想对应
预定义类
还是在那个中括号里面做文章,不过它好像已经走到尽头了。由于是中括号的马甲,因此它们还是对应一个字符。
字符 | 等同于 | 描述 |
. | [^\n\r] | 一个除了换行和回车外的所有字符 |
\d | [0-9] | 一个数字字符 |
\D | [^0-9] | 一个非数字字符 |
\w | [a-zA-Z0-9_] | 一个单词字符(所有的字母) |
\W | [^a-zA-Z0-9_] | 一个非单词字符 |
\s | [\t\n\x0B\f\r] | 一个空白字符 |
\S | [^\t\n\x0B\f\r] | 一个非空白字符 |
1 | alert(/\d/.test("3"))//true |
量词
代码 | 类型 | 描述 |
? | 软性量词 | 出现零次或一次 |
* | 软性量词 | 出现零次或多次(任意次) |
+ | 软性量词 | 出现一次或多次(至少一次) |
{n} | 硬性量词 | 对应零次或者n次 |
{n,m} | 软性量词 | 至少出现n次但不超过m次 |
{n,} | 软性量词 | 至少出现n次(+的升级版) |
分组
到目前为止,我们只能一个字符到匹配,虽然量词的出现,能帮助我们处理一排密紧密相连的同类型字符。但这是不够的,下面该轮到小括号出场了,中括号表示范围内选择[],大括号表示重复次数{}。小括号允许我们重复多个字符()。
1 | /(cai){2}/.test("caicai") //true |
继续在分组上做文章。在分组中插入管道符(“|”),把它划分为两个或多个候多项。
1 | var reg = /(red|black|yellow)!!/; |