gpt4 book ai didi

javascript - 为什么使用 + 仍然匹配空字符串

转载 作者:行者123 更新时间:2023-12-02 18:17:03 25 4
gpt4 key购买 nike

为什么这个正则表达式将空字符串放入匹配数组的开头和结尾?

var s = "1111abcd2222";

var re = /(\d+)([a-z]*?)(\d+)/g;

console.log(s.split(re)); //=>"", "1", "abcd", "2222", ""]

我认为 + 运算符会避免空字符串匹配,因为它至少需要一个字符。

最佳答案

您缺少开始和结束指示器:

var re = /^(\d+)([a-z]*?)(\d+)$/g;
// ^- start ^ -end

字符串 aa1bb 可以通过 /([a-z]+)\d([a-z]+)/ 进行匹配,就像 a1b因为它不必贪婪。如果您使用 /^([a-z]+)\d([a-z]+)$/ 则表示它必须从开头开始匹配并在末尾停止,因此它将匹配 aa1bb 给出 [ "aa1bb", "aa", "bb"]

由于您使用了 split,因此您在开头和结尾处得到了空字符串。

"aaa".split(/a/); // [ "", "", "", "" ]
"abab".split(/(ab)/); // [ "", "ab", "", "ab", "" ]

关于javascript - 为什么使用 + 仍然匹配空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19185702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com