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

浙公网安备 33010602011771号