匹配单个字符串
- 用“ . ”来匹配任意单个字符
- 需要找“ . ”本身使用“\.”,"\"为特殊字符序列的开头
匹配一组字符串
匹配多个字符中的某一个
使用“ [ ”** 和 **“ ] ” 来定义一个字符集合
利用字符集和区间
[0-9] 和 [A-Z] 和 [A-Za-z0-9]
取非匹配
- [^0-9a-b] 注意:" ^ " 是作用于整个区间,而非紧跟后面的
使用元字符
匹配空白字符
- \B —— 回退并删除一个字符(BackSpace键)
- \f —— 换页符
- \n —— 换行符
- \r —— 回车符
- \t —— tab符
\v —— 垂直tab符
匹配数字
- \b —— 任意一个数字字符(等价于[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])
匹配十六进制货八进制数值
使用POSIX字符类 (javascript不支持)
重复匹配
匹配一个或多个字符
- 使用 “ + ” 表示同一个字符(或字符集合)的多次重复, 至少需要匹配一个字符。
字符集合中的元字符会被解析为普通字符,例如:[\w.] 等价于 [\w.]
匹配零个或多个字符
- 使用 “ * ” 表示同一个或多个字符(或字符集合)的多次重复。
- 可以把 “ * ” 理解为 “在我前面的字符或字符集合是可选的”
“ + ” 和 “ * ” 区别是前者至少需要匹配一个字符,后者可以不出现
匹配零个或多个字符
- 使用 “ ? ” 表示同一个字符(或字符集合)的零次或一次出现。
匹配的重复次数
为重复匹配的次数设定一个精确的值
- 使用“ { ” 和 “ } ” 来为前面一个字符(或字符集合)重复匹配次数设定一个精确的值。
- 例子: [3] [1] [2]
正则:
(\[\d\]){3}
为重复匹配次数设定一个区间
- 使用“ { ” 和 “ } ” 来为前面一个字符(或字符集合)重复匹配次数设定一个区间的值。
- 例子:
- [3] [1] [2]
- myArray[0]
正则:
(\[\d\]){1,3}
匹配 “至少重复多少次”
- 例子:
- [3] [1] [2]
- myArray[0]
正则:
(\[\d\]){1,}
- 例子:
- 匹配 贪婪型元字符 和 懒惰型元字符
- 贪婪型元字符 : 懒惰型元字符
-
- : *?
-
- : +?
{n,} : {n,}?
- 例子:需要取得元素标签
- BK and cK
正则:
<[Bb]>.*?
位置匹配
- 单词边界
- 使用 ** \b ** 来匹配一个单词的开始或结尾 ** \b ** 匹配这样的一个能构成单词的字符(字母,数字和下划线),等同于 ** \w **
- 例子: The cat acattered his food all over the room
- 正则:
\bcat\b
- 输出:cat #
使用 ** \B ** 表示不匹配一个单词的边界
等同于 ** \W **
- 字符串边界
- 使用 ** ^ ** 定义字符串的开头
- 例子: this is bad
- 正则:
^\s*<\?xml.*\?>
//对合法的空白自负做出妥善处理 # - 使用 ** (?m) ** 开启分行模式 分行模式吧分隔符当做一个字符串分隔符来对待 有许多正则表达不支持分行模式
- 例子: //a //b
- 正则:
(?m)^\s*//.*$
子表达时
- 使用 ** “( ” ** 和 ** “ ) ” ** 来表示子表达式
- 例子: 1983-03-13
- 正则:
(19|20)\d{2}
#
- 使用子表达式的嵌套,应该按照先內后外的原则进行
回朔引用:前后一致匹配
- 使用 ** \数字 ** 表示表达式的后半部分引用在前半部分中定义的子表达式,可以想象变成变量
- 例子: of of and and
- 正则:
[ ]+(\w+)+[ ]+\1
- 替换模式 P85 需要继续了解
前后查找
- 正向前查找 ** ?= **
- 正向后查找 ** ?<= **
- 负向前查找 ** ?! **
- 负向后查找 ** ?<! **
javascript的正则 附录
- exec:匹配 RegEx
- match:匹配 字符串
- replace:替换 字符串
- split:分拆
- search:测试指定的字符串是否匹配字符串的方法
- test: 测试指定的字符串是否匹配RegEx的方法
javascript 命令行注意点
- g:激活全局搜索功能
- i:匹配不分字母大小写
- m:多行字符串
- s:单行字符串
- x:忽略空表字符
- $':将返回被匹配字符串前面的所有东西
- $`:将返回被匹配字符串后面你的所有东西
- $&:将返回被匹配到的所有东西