gpt4 book ai didi

javascript - 正则表达式测试函数不返回相同的依赖引号

转载 作者:数据小太阳 更新时间:2023-10-29 05:08:12 26 4
gpt4 key购买 nike

我在 javascript 中有一个带有正则表达式的奇怪案例:

var re = /[^\s]+(?:\s+|$)/g;
re.test('foo'); // return true
re.test("foo"); // return false

正则表达式类型敏感吗?我的第一个目标是提取字符串的所有单词(由一个或多个空格分隔)。

感谢您的帮助。

朱利安

最佳答案

在 Javascript 正则表达式上使用 g 标志时,它将跟踪找到最后一个匹配项的位置,并在您下次尝试查找匹配项时从该索引开始搜索。

在两次 re.test() 调用之间,查看 re.lastIndex 以了解我在说什么。

例如:

var re = /[^\s]+(?:\s+|$)/g;
re.test('foo'); // return true
re.lastIndex; // 3
re.test("foo"); // return false

您会注意到您使用的引号类型并不重要,re.test('foo'); re.test('foo'); 将具有相同的行为。

如果您希望正则表达式重新开始,您可以从正则表达式中删除全局标志,或者在每次尝试查找匹配项后将 re.lastIndex 设置为 0 ,例如:

var re = /[^\s]+(?:\s+|$)/g;
re.test('foo'); // return true
re.lastIndex = 0;
re.test("foo"); // return true

Blender 在注释中指出的交替可以解释因为 lastIndex 在匹配失败时自动设置为 0,因此失败后的下一次尝试将成功。

关于javascript - 正则表达式测试函数不返回相同的依赖引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16091522/

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