javaScript经典系列之正则表达式
Opened this issue · 0 comments
wangzhenggui commented
正则表达式小结
实例化一个RegExp对象有俩种方式
- /^$/
- new RegExp()
第一种方式
var reg = /\bis\b/;
var str = 'This is abc,This is def';
str.replace(reg,'IS');
var reg = /\bis\b/g;
var str = 'This is abc,This is def';
str.replace(reg,'IS');
第二种方式
var reg = new RegExp('\\bis\\b')
var str = 'This is abc,This is def';
str.replace(reg,'IS');
var reg = new RegExp('\\bis\\b','g')
var str = 'This is abc,This is def';
str.replace(reg,'IS');
/^$/ 和 /^$/g 这俩种方式的区别? 后面一种方式表示匹配全文,前面只会匹配第一项
g标示全局标示
i表示忽略大小写
m表示多行搜索
使用时可以连在一起使用;例如 /\bis\b/gi 表示全局搜索并且忽略大小写
###常用元字符
\d 数字标示
\D 除数字以外
\w 单词表示 包括字母数字下划线
\W 除了上面\w以外的
\s 空格
\S 除了空格
\b 单词边界
\B 非单词边界 【单词边界分左右】 例如想匹配This中的is \Bis\b
{} 量词
() $1 分组
[] 或者
^ 开头 取反意思
$ 结尾
. 任意字符
- 任意个字符 表示量词
? 0次或一次
- 最少一次
- 任意次包括0次
贪婪模式、非贪婪模式
贪婪模式是尽可能匹配多的元素
非贪婪模式匹配最少量的元素,只要在量词后面加问号就可以了
例子:
'a12345'.match(/[a-z]\d{3,6}/)
贪婪模式下匹配结果为:'a12345'
'a12345'.match(/[a-z]\d{3,6}?/)
非贪婪模式下匹配结果为:'a123'