JavaScript正则表达式与JS里其它多种数据结构一样,可以用两种方式来表达,一种是使用RegExp()构造函数new出来一个新的表达式对象,另一种是直接使用字面量来表示。即var pattern = new RegExp("s$"); 与 var pattern = /s$/; 两种形式。
正则表达式里有特殊意义的字符: ^ $ . * + ? = ! : | \ / ( ) [ ] { }
正则表达式的标志位有: i , g , m (i 表示大小写敏感的匹配,g表示全局匹配即不只是匹配到第一个符合的结果而是匹配所有的结果, m表示多行模式即不只匹配一行而是全文)。使用方法为:/s$/g或RegExp("s$","g")。
正则表达式中字符类集意义:
\w 匹配所有ASCII字符集合,相当于[a-zA-Z0-9]。
\W 匹配所有不属于\w集合中的字符,相当于[^a-zA-Z0-9]。
\s 匹配所有Unicode空白字符。
\S 匹配所有不是Unicode空白字符。
\d 匹配所有ASCII数字,相当于[0-9]。
\D 匹配所有不是ASCII数字的字符,相当于[^0-9]。
\o 匹配NUL字符。
\t 匹配tab制表符。
\n 匹配新的一行。
\v 匹配vtab垂直制表符。
\f 匹配换页符。
\r 匹配回车符。
\b 匹配位于单词的开头或结尾的匹配。如/\bis\b/匹配单个单词is而不会匹配this这个单词。
\B 匹配不是一个单词边界,如/\Bis/会匹配this中的is而不会匹配is这个单词。
\x nn 匹配十六进制拉丁字符。
\u xxxx 匹配十六进制Unicode字符。
\c X 匹配控制字符。
正则表达式中特殊字符意义:
^ 匹配字符串或行的开始。
$ 匹配字符串或行的末尾。
? 匹配关键词出现0次或1次,相当于{0,1}。其还可用于非贪婪匹配中,匹配最少可以匹配的项。如/a+b/会匹配aaab,但/a+?b/只会匹配到ab。
. 匹配任意字符除了换行和行结束符。
* 匹配关键词的出现0次或多次。相当于{0,}。
+ 匹配关键词的出现为1次或多次,相当于{1,}。
= 多用于 ?=p 这样的表达式中,这个表达式的意义为必须匹配关键词p的元素。
! 多用于 ?!p 这样的表达式中,这个表达式的意义为必须匹配没有关键词p的元素。
: 用于(?:p)这样的表达式中,以关键词p来分组。
| 相当于或,匹配符号左边或右边的表达式。
\ 转义符号,用来将特殊字符转换为一般匹配字符或将一般字符转换为特殊匹配字符。
/ 正则表达式开始与结束的标志。
() 用来分组匹配表达式,可以用\加数字来引用分组。
[] 对匹配表达式进行分类,[]属于其中或[^]不属于其中。
{} 重复重次,{n,m}至少有n次至多有m次。{n,}至少有n次无上限,{n}出现n次。