var str1=new RegExp("e"); document.write(str1.exec("hello")); 以上代码输出结果为( )

var str1=new RegExp("e");
document.write(str1.exec("hello"));
以上代码输出结果为 e

JavaScript高级程序设计上面的原话:
RegExp 对象的主要方法是 exec(),该方法是专门为捕获组而设计的。
exec()接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没有匹配项的情况下返回 null。

返回的是个数组,但是document.write打印时只打印了第一个元素。打印的是隐性toString()后的数据

如果匹配成功,exec() 方法返回一个数组,并更新正则表达式对象的属性。返回的数组将完全匹配成功的文本作为第一项,将正则括号里匹配成功的作为数组填充到后面。

如果匹配失败,exec() 方法返回 null。

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec

var str1=new RegExp("e");
 str1.exec("hello")
 ["e", index: 1, input: "hello", groups: undefined]
 
 var str1=new RegExp("l");
 str1.exec("hello")
 ["l", index: 2, input: "hello", groups: undefined]

exec() 方法在控制台中输出的应该是一个伪数组,且数组的第一位是 ‘e’ 。而题目中使用的是 document.write() 方法,经过测试发现,页面上显示的是 ‘e’ 而不是伪数组

exec() 方法是一个正则表达式方法。

exec() 方法用于检索字符串中的正则表达式的匹配。

该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

本题的exec执行结果是一个数组,但是使用了document.write,所以显示在html中的内容是数组中的元素,即e

js还有一个test()方法,用于检测字符串是否匹配某个模式,返回值为boolean

因为document.write传入的是一个数组,所以会默认调用toString的方法,也就是str1.exec("hello").toString(),结果就是e

posted @ 2023-11-08 15:09  龙陌  阅读(92)  评论(0)    收藏  举报