[简易教程](https://github.com/ziishaned/learn-regex/blob/master/translations/README-cn.md) 1. `/i`忽略大小写 2. `/g`多次匹配 3. js中,`string.test(/a/)`测试正则是否匹配 4. js中,`string.match(/a/)`返回匹配结果 5. `/[abc]/g`匹配`a`,`b`,`c` 6. `+`匹配一次或多次出现;`*`匹配零次出现或多次;`?`匹配0次或1次 7. `.`匹配任意字符(除换行符) `[.]`标识匹配句号,而非任意字符 8. `?`懒惰匹配 9. `/^a/`匹配以a开头,`/a$/`匹配以a结尾 10. `/[^a]/`匹配不是a的 11. `/\w/` = `/[a-zA-Z0-9_]/` 12. `/\W/` = '/[^a-zA-Z0-9_]/' 13. `/\d/`匹配所有数字 14. `/\D/`匹配所有非数字 15. `/\s/`匹配空格,还包括回车、制表符、换页和新行字符。你可以将其看作与字符类`[\r\t\f\n\v]`类似 16. `/\S/`匹配非空格 17. 懒惰模式的启用只需在**重复元字符**之后加`?`既可。 18. ()表示一个集合,表达式`(ab)*`匹配连续出现 0 或更多个`ab` 19. `?=`正先行断言。例如,表达式`(T|t)he(?=\sfat)`匹配`The`和`the`,在括号中我们又定义了正先行断言`(?=\sfat)`,即`The`和`the`后面紧跟着`(空格)fat` 20. `?!`负先行断言,和正先行断言相反,后面不能跟 21. `?<=`正后发断言。例如,表达式`(?<=(T|t)he\s)(fat|mat)`匹配`fat`和`mat`,且其前跟着`The`或`the` 22. `?<!`负后发断言,和正后发断言相反