javascript正则表达式的一些笔记
正则表达式:Regular Expression。使用单个字符串来描述,匹配一系列符合某个句法规则的字符串。即按照某种规则去匹配符合条件的字符串。正则表达式就是规则。
\b 单词边界
regexp对象:
加g表示全局,匹配所有
不加只匹配一次
加i表示忽略大小写,默认是不忽略
m代表多行搜索。
正则表达式由两种基本字符类型组成
- 原义文本字符
- 元字符:在正则表达式中有特殊含义的非字母字符
\t 水平制表符
\v 垂直制表符
\n 换行符
\r 回车符
\0 空字符
\f 换页符
\cX 与X对应的控制字符(Ctrl+X)
使用元字符[]来构建一个简单的类,符合某些特性的对象,是泛指。如[abc]把字符a,b,c归为一类。
^在中括号中代表反义。
预定义类
. [^\r\n]
\d [0-9]
\D [^0-9]
\s [\t\n\x0B\f\r]
\S [^\t\n\x0B\f\r]
\w [a-zA-Z_0-9]
\W [^a-zA-Z_0-9]
边界匹配字符
^ 以xxx开始
$以xxx结束
\b 单词边界
\B 非单词边界
量词:
? 出现0次或一次(最多一次
- 出现一次或多次(至少一次
- 出现0次或多次(任意次
{n} 出现n次
{n,m} 出现n到m次
{n,} 至少出现n次
非贪婪模式,量词加?
\d{3,6}?
用括号可以分组,如可以用分组加量词
用|可以达到或的效果
反向引用
用$捕获分组
分组内加上?;可以忽略分组
正向前瞻 exp(?=assert)
负向前瞻 exp(?!assert)
断言部分不包含在规则里,如替换时断言部分不替换
正则对象属性
global: 是否全文搜索
ingore case: 是否大小写敏感
multiline: 多行搜索
默认皆为false,只读,不能设值
lastIndex: 当前表达式匹配内容的最后一个字符的下一个位置,即下一次搜索的开始位置
source: 正则表达式的文本字符串
test() ,会造成一些坑,跟lastIndex有关
exec() 没匹配返回null,否则返回结果数组