(1)正则表达式中所有的字母字符和数字都是要按照直接量与自身匹配的,例如:我们很熟悉的换行符“ ”在匹配中就是直接量换行字符
正则表达式的直接量字符
然而,又很多标点符号具有特殊的含义,就像它们==> ^ $ . * + ? = ! : | / ( ) [ ] { } 如果你在正则表达式中想要用到这些标点符号,就必须加前缀
example: 正则“/\/”与包含反斜杠的字符串匹配
(2)将单独的直接量字符放进方括号内就可以组合成字符类(character class),例如:我想匹配拉丁字母集中任何字母数字字符,我可以使用 /[a-zA-Z0-9]/
字符类
(3)有时需要描述具有任意多位数的数字,或者描述字符串,需要用到重复字符,例如:匹配两个ASCII数字,可以用/dd/
重复字符
example:
- /d{2,4}/ 匹配2~4个数字
- /w{3}d?/ 匹配3个ASCII单字符和一个可选的数字
- /s+javas+/ 匹配前后带有1个或以上个空格的java字符串
- /[^"]*/ 匹配0个或多个"
(4)正则表达式的选择、分组和引用运算符
正则表达式的选择、分组和引用运算符
(...)也被称为捕获型分组,(?:...)被称为非捕获型分组,名字已说明是否能够记忆和它匹配的字符。
example:
- /([Jj]ava(?:[Ss]cript)?)siss(funw*)/ 其中1引用了与([Jj]ava(?:[Ss]cript)?)匹配的文本,2引用了与(funw*)匹配的文本,注意:在这里,用(?:..)括起来的分组不参与编码
(5)有时需要指定匹配的位置,需要用到正则表达式的锚字符
正则表达式的锚字符
(6)正则表达式的标志,用于说明高级模式匹配的规则
正则表达式的标志
example:
- /java/gi 在一个字符串中找到所有的单字“java”(或者“Java”,“JAVA”等)(不分大小写)
以上便是我在《JavaScript权威指南》所做的总结,接下来该轮到用于模式匹配的方法~