Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 regex-关于字符前后的空字符串的文档_Javascript_Regex - Fatal编程技术网

Javascript regex-关于字符前后的空字符串的文档

Javascript regex-关于字符前后的空字符串的文档,javascript,regex,Javascript,Regex,关于这个问题: 及 我不知道每个字母前后的空字符串的解释。我第一次听到这个。因为我现在有点困惑,找不到关于它的任何其他来源,所以我还可以在哪里阅读它。匹配正则表达式时,解释器首先尝试在字符串的索引0处进行匹配 如果没有匹配项,它将前进到下一个索引并重试 如果存在匹配项,它将返回该匹配项,然后在匹配结束时再次尝试匹配。如果最后一个匹配项与空字符串匹配,则将前进到下一个字符 依此类推,对于每个匹配(匹配时)或每个字符(不匹配时) regexd*中的问题是它接受一个空匹配-这意味着空字符串与模式

关于这个问题: 及


我不知道每个字母前后的空字符串的解释。我第一次听到这个。因为我现在有点困惑,找不到关于它的任何其他来源,所以我还可以在哪里阅读它。

匹配正则表达式时,解释器首先尝试在字符串的索引0处进行匹配

  • 如果没有匹配项,它将前进到下一个索引并重试
  • 如果存在匹配项,它将返回该匹配项,然后在匹配结束时再次尝试匹配。如果最后一个匹配项与空字符串匹配,则将前进到下一个字符
依此类推,对于每个匹配(匹配时)或每个字符(不匹配时)

regex
d*
中的问题是它接受一个空匹配-这意味着空字符串与模式匹配。这意味着你总能找到匹配的

让我们在
dddxddd
字符串上尝试
d*
模式:

以下是初始位置:

dddxdddd     matches: []
^
^
实际上意味着光标位于第一个
d
之前。您应该将光标视为字符串中两个字符之间的。这将帮助您了解匹配过程

让我们插入虚构的空格来说明:

 d d d x d d d d     matches: []
^
我们在这里得到第一个匹配,因为第一个字符是a
d

dddxdddd
\_/
匹配后,我们将光标放在匹配结束的位置,在
d
x
之间:

 d d d x d d d d     matches: ["ddd"]
      ^
我们试着再次匹配。匹配成功,
d
x
之间的空字符串。当我们得到一个空匹配时,我们前进光标:

 d d d x d d d d     matches: ["ddd", ""]
        ^
然后我们再次尝试匹配,得到
dddd
子字符串:

dddxdddd
    \__/
我们将光标放在它后面:

 d d d x d d d d     matches: ["ddd", "", "dddd"]
                ^
现在它位于最后一个
d
和字符串末尾之间。我们再次尝试匹配,并成功使用空字符串:

 d d d x d d d d     matches: ["ddd", "", "dddd", ""]
                  ^
如果我们尝试前进光标,它现在将超过字符串的末尾,这意味着我们已经找到所有匹配项,并且我们已经完成

最终结果:

["ddd", "", "dddd", ""]

匹配正则表达式时,解释器首先尝试在字符串的索引0处进行匹配

  • 如果没有匹配项,它将前进到下一个索引并重试
  • 如果存在匹配项,它将返回该匹配项,然后在匹配结束时再次尝试匹配。如果最后一个匹配项与空字符串匹配,则将前进到下一个字符
依此类推,对于每个匹配(匹配时)或每个字符(不匹配时)

regex
d*
中的问题是它接受一个空匹配-这意味着空字符串与模式匹配。这意味着你总能找到匹配的

让我们在
dddxddd
字符串上尝试
d*
模式:

以下是初始位置:

dddxdddd     matches: []
^
^
实际上意味着光标位于第一个
d
之前。您应该将光标视为字符串中两个字符之间的。这将帮助您了解匹配过程

让我们插入虚构的空格来说明:

 d d d x d d d d     matches: []
^
我们在这里得到第一个匹配,因为第一个字符是a
d

dddxdddd
\_/
匹配后,我们将光标放在匹配结束的位置,在
d
x
之间:

 d d d x d d d d     matches: ["ddd"]
      ^
我们试着再次匹配。匹配成功,
d
x
之间的空字符串。当我们得到一个空匹配时,我们前进光标:

 d d d x d d d d     matches: ["ddd", ""]
        ^
然后我们再次尝试匹配,得到
dddd
子字符串:

dddxdddd
    \__/
我们将光标放在它后面:

 d d d x d d d d     matches: ["ddd", "", "dddd"]
                ^
现在它位于最后一个
d
和字符串末尾之间。我们再次尝试匹配,并成功使用空字符串:

 d d d x d d d d     matches: ["ddd", "", "dddd", ""]
                  ^
如果我们尝试前进光标,它现在将超过字符串的末尾,这意味着我们已经找到所有匹配项,并且我们已经完成

最终结果:

["ddd", "", "dddd", ""]

并不是说“每个字母前后都有空字符串”。您的问题的答案在您链接的问题的答案中。。。“您的正则表达式将“”空字符串与
d*
匹配,因为
*
量词表示零或多次,这里是零
d
。”并不是说“每个字母前后都有空字符串”。您的问题的答案在您链接的问题的答案中。。。“您的正则表达式将“”空字符串与
d*
匹配,因为
*
量词表示零或多次,这里是零
d
。”这终于有意义了。谢谢你的例子,以及带项目符号的要点…-)它终于有意义了。感谢您提供的示例和项目符号点…-)