我想问下为什么直接输出console.log(regexp1.exec(str[0]))得到的是null
来源:2-15 编程练习
慕村8326374
2021-02-02 23:04:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var str = 'regular expression = regexp';
var regexp1=/lar\sexp/;
var regexp2=new RegExp('lar\\sexp');
console.log(regexp1.test(str));
console.log(regexp2.test(str));
var a =regexp1.exec(str);
var b= regexp2.exec(str);
console.log(a[0])
console.log(b[0])
// 我想问下为什么直接输出console.log(regexp1.exec(str[0]))得到的是null 我这样用个变量接受后才能正常访问
</script>
</body>
</html>
1回答
同学你好, 代码是正确的,针对同学的问题解答如下:
因为regexp1.exec(str[0])这句代码,相当于先通过str[0]获取字符串中的第一个字符r,然后再通过regexp1.exec()方法检测,也就是说正则是针对r进行检测,所以返回的结果为null。
建议:可以写成使用正则检测字符串str,然后在通过索引[0]获取到结果,示例:
祝学习愉快~
相似问题
回答 3