JavaScript正则表达式
学习,留个笔记。
1.JavaScript应用正则的俩种方式
·字面量:
var reg = /\bis\b/g; //\b代表单词边界 'He is XiaoMing, a good student'.replace(reg, 'Is'); //将is替换为Is
·构造函数:
var reg = new RegExp('\\bis\\b', 'g'); //全部的单词is,\写两边是为了转义\ 'He is XiaoMing, a good student'.replace(reg, 'Is'); //将is替换为Is
2.修饰符
·g:global全文搜索,不添加的话,搜索到第一个匹配后返回
·i:ignore case 忽略大小写,默认是大下写敏感
·m:multiple lines 多行搜索匹配
3.正则表达式由 原义文本字符 和 元字符 组成
·原义文本字符:代表字符自身的含义,比如abc
·元字符:有特殊含义的字符串。比如\b,代表单词边界
※特别要注意: *+^$.|_(){}[]
4.字符类:使用[]构建,比如表达式[abc]表示匹配字符a或者b或者c
5.字符类取反:使用^创建,表示匹配不属于这一类的内容,比如[^abc],表示匹配不是a或者b或者c
6.范围类:使用-创建,比如[a-z]表示从a到z的任意字符,注意是保护边界a和边界z的
·想匹配字符-的话,只需要[a-z-]即可
7.预定义类及边界
字符 含义 . 除了回车符和换行符以外的所有字符 \d 数字字符0到9 \D 非数字字符 \s 空白符 \S 非空白符 \w 单词字符(字幕,数字下划线),等价于[a-zA-Z_0-9] \W 非单词字符
·边界
字符 含义 ^ 以xxx开始 $ 以xxx结束 \b 单词边界 \B 非单词边界
8.量词
字符 含义 ? 出现0次或者1次(最多出现一次) + 出现1次或者多次(至少出现一次) * 出现0次或者多次(任意次) {n} 出现n次 {n,m} 出现n到m次 {n,} 至少出现n次
比如表达式\d{5},表示数字连续出现5次
9.贪婪模式:尽可能多的匹配,比如\d{3,6},会按照最大6位数字匹配
非贪婪模式:尽可能少的匹配,量词后加上?,比如\d{3,6}?,会按照最小3位数字匹配
10.分组
使用()进行分组,比如([a-z]\d){3},表示匹配a到z的字母加一个数字连续出现3次的情况
11.或 逻辑用|进行实现
12.反向引用,分组后使用$1实现
'2016-11-25'.replace(/(\d{4})-(\d{2})-(\d{2})/g, '$2/$3/$1')
"11/23/2016"
13.忽略分组:在分组()中添加:?