js正则表达式test()⽅法
test() ⽅法是正则表达式的⼀个⽅法,⽤于检测⼀个字符串是否匹配某个模式.
test ⽅法检查字符串是否与给出的正则表达式模式相匹配,如果是则返回 true,否则就返回 false。
每个正则表达式都有⼀个 lastIndex 属性,⽤于记录上⼀次匹配结束的位置.
语法:st(str)
在全局匹配模式下
对于同⼀个正则对象重复调⽤就会出现下⼀次的匹配位置从上⼀次匹配结束的位置开始,解决⽅法重置lastIndex为0
let reg = /^[\d]{2}$/g;
let str = "12";
console.st(str));    //返回true
let = "123";
console.st(str));    //从数字3开始匹配,只有⼀个数字,故返回false
重置lastIndex为0
let reg = /^[\d]{2}$/g;
let str = "12";
console.st(str));    //返回true
let = "123";
reg.lastIndex = 0;
console.st(str));    //返回true
在⾮全局匹配模式下,则不存在这个问题
let reg = /^[\d]{2}$/;
let str = "12";
console.st(str));    //返回true
let = "123";
console.st(str));    //返回true
另外,test()⽅法和数组的forEach()⽅法⼀起使⽤可能达不到预期结果,在for循环下,同样如此,如下
let line = '1a 123 123 12';
let lines = line.split(' ');
let reg = /^[\d]+$/g;
let res = 0;
lines.forEach( function(element, index) {
console.st(element));  // flase true 交替出现
});
使⽤forEach⽅法对数组中字符串进⾏test测试,会出现flase true 交替出现的现象,先出现false还是true则取决数组第⼀个元素匹配的结果。
同样的,在⾮全局匹配模式下,则不存在这个问题,这⾥去掉全局匹配g才可得到预期结果
let line = '1a 123 123 12'
let lines = line.split(' ');
let reg = /^[\d]+$/;
let res = 0;
lines.forEach( function(element, index) {js中文正则表达式
console.st(element));  // false true true true    });

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。