我想问下为什么直接输出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回答

好帮手慕慕子

2021-02-03

同学你好, 代码是正确的,针对同学的问题解答如下:

因为regexp1.exec(str[0])这句代码,相当于先通过str[0]获取字符串中的第一个字符r,然后再通过regexp1.exec()方法检测,也就是说正则是针对r进行检测,所以返回的结果为null。

建议:可以写成使用正则检测字符串str,然后在通过索引[0]获取到结果,示例:

http://img.mukewang.com/climg/601a072f09012f0d05100084.jpg

http://img.mukewang.com/climg/601a073a094991ef01960186.jpg

祝学习愉快~

0

0 学习 · 15276 问题

查看课程