web前端之JavaScript正则表达式

web前端之JavaScript正则表达式

后面有代码:

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

\d 表示数字
\d? ?表示0个或者一个
\d+ +表示一个或者多个
\d{3} 表示三个
\d{3,5} 表示三到五个
\d{3,} 表示至少出现3次
\d* *表示0到任意个
\b 表示单词边界
\B 表示非单词边界
\bis\b 表示查找“ is ”的
. 表示任意字符
\ 表示转译
http:(\/\/.+\.jpg) 用()进行分组
$1 获取其内部东西

[]表示或
^表示开头
$表示结尾
g表示全局
\d{4}[/-]\d{2}[/-]\d{2}
\w 表示一个单词字符


字面量:var reg=/\bis\b/g;
构造函数:var reg=new RegExp('\\bis\\b','g');
修饰符:
g:global全文搜索;不添加,搜索到第一个匹配停止
i:ignore case忽略大小写,不添加,大小写敏感
m:multiple lines多行搜索

子符类:'a1b1c1d3f3'.replace(/[abc]/g,'X')
字符类取反:'a1b1c1d3f3'.replace(/[^abc]/g,'X')
范围类:'a1b1c1d1f1e1asd'.replace(/[a-z]/g,'Q');
很多个范围类:'a1b1c1d1f1e1asdABGS123BGJS'.replace(/[a-zA-Z]/g,'Q');
在选择多个范围类的时候需要匹配“-”,那就在最后添加“-”就可以了:'2010-07-08'.replace(/[0-9-]/g,'A');

预定类:匹配一个 ab+数字+任意字符  的字符串:ab\d.

边界:'This is a boy'.replace(/\Bis\b/g,'0')
@开始:'@123@abc@'.replace(/^@./g,'Q')
@结束:'@123@abc@'.replace(/.@$/g,'Q')
多行匹配:
'@123
@456
@789'.replace(/^@\d/gm,'X')

量词:
\d 表示数字
\d? ?表示0个或者一个
\d+ +表示一个或者多个
\d{3} 表示三个
\d{3,5} 表示三到五个
\d{3,} 表示至少出现3次
\d* *表示0到任意个


正则表达式贪婪模式:
'12345678'.replace(/\d{3,6}/g,"A");

非贪婪模式(后面加一个“?”就可以了):
'123456789'.match(/\d{3,5}?/g)

分组:
'a1b1c1d1'.replace(/[a-z]\d{3}/g,"X")
"a1b1c1d1"
'a1b1c1d1'.replace(/([a-z]\d){3}/g,"X")
"Xd1"

或:
'AbcdEf'.replace(/Abcd|Ef/g,'X');
"XX"
'AbcdEfAbabEf'.replace(/Ab(cd|ab)Ef/g,'X');
"XX"

反向引用:
'2016-12-21'.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2-$3-$1')
"12-21-2016"

前瞻(前面一个单词字符后面一个数字):
'a2*3'.replace(/\w(?=\d)/g,'X')
"X2*3"
'a2*34V8'.replace(/\w(?=\d)/g,'X')
"X2*X4X8"
'a2*34VV'.replace(/\w(?=\d)/g,'X')
"X2*X4VV"
'a2*34VV'.replace(/\w(?!\d)/g,'X')
"aX*3XXX"

对象属性:
g:global全文搜索;不添加,搜索到第一个匹配停止
i:ignore case忽略大小写,不添加,大小写敏感
m:multiple lines多行搜索
lastIndex:是当前表达式匹配内容的最后一个字符的下一个位置
source:正则表达式的文本字符串


test方法:
var reg1=/\w/;
var reg2=/\w/g;
reg1.test('a');
true
reg1.test('$');
false
reg2.test('a');
true
reg2.test('a');
false
reg2.test('a');
true
reg2.test('a');
false
while(reg2.test('ab')){
    console.log(reg2.lastIndex);
}

exec方法:
非全局调用:
var reg3=/\d(\w)\d/;
var reg4=/\d(\w)\d/g;
var ts='1a2b3c4d5e';
var ret=reg3.exec(ts);
console.log(reg3.lastIndex + '\t' +ret.index+ '\t' + ret.toString());
console.log(reg3.lastIndex + '\t' +ret.index+ '\t' + ret.toString());
while(ret=reg4.exec(ts)){
    console.log(reg4.lastIndex + '\t' +ret.index+ '\t' + ret.toString());
}
0   0   1a2,a
0   0   1a2,a
3   0   1a2,a
7   4   3c4,c

非全局下lastIndex不生效
toString()):第一个正则获取的字段,第二个正则中的分组的字段


全局下:
第一个数:第一次获取到之后的,下一个字符的位置
第二个数:从第几个字符后获取到和正则匹配的
第三个数:第一个正则获取的字段,第二个正则中的分组的字段


字符串对象方法:
var reg3=/\d(\w)\d/;
var reg4=/\d(\w)\d/g;
var ts='1a2b3c4d5e';
var ret=ts.match(reg3);
console.log(ret);
console.log(ret.lastIndex + '\t' +ret.index+ '\t');
ret=ts.match(reg4);
var ret=ts.match(reg4);
console.log(ret);
console.log(ret.lastIndex + '\t' +ret.index+ '\t');

'a1b2c3d4'.split(/\d/g)
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值