javascript RegExp multiline多行匹配影响的^$
javascript RegExp multiline多行匹配影响的^$
发布时间:2016-12-29 来源:查字典编辑
摘要:内容全写注释里了--复制代码代码如下:/^$/.test('n');//false,为什么呢,说明如下varp=/^/mg;vars='1n...

内容全写注释里了- -

复制代码 代码如下:

<script type="text/javascript">

/^$/.test('n'); //false,为什么呢,说明如下

var p = /^/mg;

var s = '1nnn2nn3';

p.test(s); //跳过开始位置JS里好象没那个词- -

p.test(s);

alert(RegExp.rightContext.replace(/x0A/g, 'a'));

//由此得出^匹配的是n后面的位置或开始的位置

var p = /$/mg;

var s = '1nnn2nn3';

p.test(s);

alert(RegExp.rightContext.replace(/x0A/g, 'a'));

//由此得出$匹配的是n前面的位置或结尾的位置

var p = /^s*$/mg;

var s = '1nnn2nn3';

alert(s.replace(p, function (l, index) {

alert(index);

return '';

}).replace(/x0A/g, 'a'));

/*

即位置或范围用|表示

第一次匹配

注锚点不耗字符,所以它匹配的内容是位置用|标明

内容用|内容|标明

^匹配的位置是1n|nn2n3n4n5

s匹配的是内容是1n|n|n2n3n4n5

$匹配的位置是1nn|n2n3n4n5

这时lastIndex为1nn|n2n3n4n5

所以第二次匹配时

^匹配的位置是1nn|n2n3n4n5

s匹配了n,然后$没成功所以回溯一次,然后匹配成功所以它实际没匹配东西即内容是1nn||n2n3

n4n5(就是空的)

$匹配的位置是1nn|n2n3n4n5

然后发现没变位置,所以强制驱动,设置lastIndex为1nnn|2n3n4n5

后面的操作和这次一样。。。所以匹配执行了3次

分开来看执行下面代码。。。

*/

var p = /^s*$/mg;

var s = '1nnn2nn3';

p.test(s); //true

alert(RegExp.lastIndex); //3

p.test(s); //true

alert(RegExp.lastIndex); //强制驱动后的结果即4

p.test(s); //true

alert(RegExp.lastIndex); //7

p.test(s); //false

alert(RegExp.lastIndex); //匹配失败没设置global的RegExp对象

/^X$/g.test('a'); //false

alert(RegExp.lastIndex); //注:匹配失败是不会设置global的RegExp对象的

/^X$/.test('X'); //true

alert(RegExp.lastIndex); //匹配成功当然会设置^^

</script>

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新正则表达式学习
热门正则表达式学习
编程开发子分类