Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在/^.*x/.exec(“abcdxsdx”)中到底发生了什么_Javascript_Regex - Fatal编程技术网

Javascript 在/^.*x/.exec(“abcdxsdx”)中到底发生了什么

Javascript 在/^.*x/.exec(“abcdxsdx”)中到底发生了什么,javascript,regex,Javascript,Regex,这个问题太具体了,我在论坛上找不到。我的控制台记录“abcxdex”,匹配整个字符串。我很困惑,因为对我来说,这意味着从头开始,我们将寻找。那不是也可以吗。我对这件事还不熟悉,但我争论的两种解释方式显然都是错误的(请将字符2视为x,或者忘记“^”部分,并将从字符2开始的表达式视为/x/,因为任何起始字符都可以工作。我认为*意味着它所绑定的字符可以从0到无限次出现。因此,如果发现“.”不存在,则下一个字符需要是x,如果“^”是强制的。请用您的话解释一下是什么这个表达式的方法实际上是这样的 我认为*

这个问题太具体了,我在论坛上找不到。我的控制台记录“abcxdex”,匹配整个字符串。我很困惑,因为对我来说,这意味着从头开始,我们将寻找。那不是也可以吗。我对这件事还不熟悉,但我争论的两种解释方式显然都是错误的(请将字符2视为x,或者忘记“^”部分,并将从字符2开始的表达式视为/x/,因为任何起始字符都可以工作。我认为*意味着它所绑定的字符可以从0到无限次出现。因此,如果发现“.”不存在,则下一个字符需要是x,如果“^”是强制的。请用您的话解释一下是什么这个表达式的方法实际上是这样的

我认为*意味着它所绑定的字符可以在0到无限次之间出现。因此,如果发现“.”不存在,则下一个字符需要是x,如果^

在正则表达式中有特殊含义。它匹配任何字符(除换行符外)

^
还有一个特殊的含义。它意味着表达式必须在字符串开头匹配

*
这样的量词是贪婪的。它们试图尽可能多地匹配,即尽可能多地重复

因此,
^.*x
意味着:从字符串开始,匹配尽可能多的字符,然后是
x

abcxdex
       ^
这些步骤大致如下:

  • 匹配
    ^

    abcxdex
    ^
    
    这很简单,因为每个字符串都有一个开头

  • 匹配
    *

    abcxdex
           ^
    
    abcxdex
          ^
    
    也很简单,因为
    *
    匹配所有内容

  • 匹配
    x

    不匹配!没有要匹配的字符。我们需要返回,让量词匹配得更少

  • 匹配
    *

    abcxdex
           ^
    
    abcxdex
          ^
    
    匹配子字符串
    abcxde

  • 匹配
    x

    abcxdex
           ^
    
    这次比赛成功了

  • 完成。表达式中没有要匹配的内容


  • 网上有很多关于正则表达式的资源:


    贪婪匹配到
    x
    。点是正则表达式语法的一部分。这里不是字符。