正则是独立于编程语言的一个学科,用于解决模式匹配问题,Javascript提供了对于正则支持,此外,Java、c、python也都支持正则。正则可以应用在:检索,替换,爬虫,论文查重等领域。
实例化正则表达式对象
- 字面量
var pattern = /正则表达式/标记
var pattern = /abc/igm - 构造函数
var pattern = new RegExp(“正则表达式”,“标记”);
var pattern = new RegExp(“abc”,“igm”);
标记:
i ignoreCase 忽略大小写
g global 全局
m multiline 多行
u unicode 任何 Unicode 代码点的转义都会被解释。
y sticky 属性反映了搜索是否具有粘性
正则表达式
- 直接量
abc 例如:/abc/ 查找目标串中是否含有abc - 字符类
[abc] 例如:/[abc]/ 查找目标串中是否含有abc中任意一个字符
[^abc] 例如:/[^abc]/ 查找目标串中是否含有除了abc之外任意一个字符
[a-z] a~z中的任意一个字符
w 字母 [a-zA-Z0-9]
W 非字母 [^a-zA-Z0-9]
d 数字 [0-9]
D 非数字[^0-9]
s 空白符
S 非空白符多行模式下
^ 以…开始 /^dw{3}d$/ 以为数字开头,以数字结尾
$ 以…结尾 - 数量词
数量一般使用在子表达式(直接量,字符类,分组…)后
/1[3578]d{9}/
{9} 重复9次
{1,9} 重复1~9次
{1,} 重复1次及以上
{0,} 重复0次及以上
* 等价于{0,}
+ 等价于{1,}
? 等价于{0,1}贪婪匹配
默认是贪婪匹配
{1,9} 优先匹配9次
非贪婪匹配
数量词后添加?就成为了非贪婪匹配
{1,9}? 优先匹配1次 - 选择子表达式中间添加"|"表示选择
例如:
/hello|hi/ - 分组