正则表达式JS版本

TOC
  1. 1. 笔记

笔记

// 字符类
var reg = /[abc]/ //表示一类特征
var reg2= /[^abc]/ //非reg

// 范围类
var reg3 = /[a-zA-Z]/

// 预定义类(^在[]里面是取反)
// \. => [^\r\n] 除了换行和回车之外的字符
// \d => [0-9] 数字
// \D => [^0-9] 非数字
// \s => [\t\n\x0B\f\r] 空白
// \S => [^\t\n\x0B\f\r] 非空白
// \w => [a-zA-Z_0-9] 字母数字下划线
// \W => [^a-zA-Z_0-9]

// 边界
// ^ 开头
// & 结尾
// \b 单词边界
// \B 非单词边界



// 量词
// ? 0次或者1次
// + 出现1次或者多次
// * 任意次
// {n} 出现n次
// {n,m} n 到 m次
// {n,}至少n次

// 贪婪模式(默认)
12345678.replace(/\d{3,6}/g,'X'); // X78

// 非贪婪模式
12345678.replace(/\d{3,6}?/g,'X'); // XX78

// 分组
var reg4 = /('thinkerchan'){3}/

// 或
var reg5 = /(a|b)/;

// 反向引用
// 2015-12-25 -> 12/25/2015
'2015-12-25'.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2/$3/$1') // (变量) 要用括号阔起来

// 忽略分组
'2015-12-25'.replace(/(?:\d{4})-(\d{2})-(\d{2})/g,'$1/$2') // 12/25 , ?:就跳过了这个(\d{4})分组

// 前瞻, 正则表达式从头到尾解析, 文本尾部叫做"前", 文本头部叫做"后"
'a2*3'.replace(/\w(?=\d)/g,'X') // X2*3 前瞻部分只做参考

'a2*3'.replace(/\w(?!\d)/g,'X') //aX*X
// 后顾(JS不支持)

// JS对象属性 (修饰符 i,g,m)
var reg6 = /\w/;
console.log(reg6.source) // 正则本身

// 以下三个默认值 g,m,i都为false, 都是只读的属性
console.log(reg6.global) // false
console.log(reg6.multiline) //false
console.log(reg6.ignoreCase) //false

// test和exec //略

var reg6 = /\w/g
reg6.test('ab') //true
reg6.test('ab') //true
reg6.test('ab') //false 这是laseIndex属性影响的

// 字符串对象方法
'abc'.search('a') // 0 , 不存在就 -1

访客评论