js正则

正则表达式中的test 和exec方法

RegExp.prototype.test(str);

测试字符串中是否含有正则表达式模式的字符串

有返回true 没有返回false

var reg1 = /\w/;

var reg2 = /\w/g;

reg1.test("a")

//true

reg1.test("b")

//true

reg2.test("ab")

true

reg2.test("ab")

true

reg2.test("ab")

false

reg2.test("ab")

true

reg2.test("ab")

true

reg2.test("ab")

false

//多执行会出现这样的问题,是因为lastIndex的问题,它的意思是,匹配元素最后位置的下一个位置。lastIndex在全局匹配中才有,非全局为0

RegExp.prototype.exec(str)

已正则的规则对字符串执行搜索,并更新RegExp对象返回匹配结果。

如果匹配到就返回一个结果数组!没有则返回null

var reg1 = /\d(\w)(\w)\d/;

var reg2 =  /\d(\w)(\w)\d/g;

var text = "1az23cd45ef6";

var reg = reg1.exec(text);

//reg 是一个数组 ["1az2", "a", "z", index: 0, input: "1az23cd45ef6"]

第一个元素 是匹配的字符,后边的是分组的值,有几个分组,就会多加几个,index是开始匹配的位置 如果text变成*1az23cd45ef6 index就变成1了,input 的值为 所匹配字符串

接下来看一下全局匹配。

while(reg = reg2.exec(text)){console.log("lastIndex"+reg2.lastIndex+"\"+reg)}

 lastIndex4\1az2,a,z

lastIndex8\3cd4,c,d

 lastIndex12\5ef6,e,f


"1b2c3d".search(/1/);//0;

"1b2c3d".search(/10/);//-0;

//取到为大于-1,取不到为-1

match方法

var reg3 = /\d(\w)\d/;

var reg4 = /\d(\w)\d/g;

var ts = "$1d1$1w2";

var reg = ts.match(reg3);

split

"1d2d3c5d".split(/\d/);

["", "d", "d", "c", "d"]

"1d1c1d1c".replace(/1/,'2');

"2d1c1d1c"

//match 匹配的数据  index 字符位置,orgin 为原字符串

"1d2d3d4d5c".replace(/\d/g,function(match,index,orgin){

return parseInt(match)+1;

})

"1d2d3d4d5c".replace(/(\d)(\w)(\d)/g,function(match,group1,group2,group3,index,orgin){

return group1+group2;

})

"1dd3dd5c"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容