gpt4 book ai didi

javascript - RegExp 不会产生预期的结果,但它在其他地方都会产生

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

我正在开始使用 Node.js 并尝试学习它,来自 PHP 环境。

我有以下正则表达式:/([A-Z]{2,})+/gim (两个或多个字母相邻)。
我有以下字符串:"That's my testing sample but it doesn't work."

所以我将其放入 Node.js(请记住我是新手):

var fs = require("fs");
var request = require("request");
// COMMENTS
var regex = new RegExp(/([A-Z]{2,})+/gim);

//COMMENTS

var thisyear = regex.exec("That's my testing sample but it doesn't work.");

console.log(thisyear);

这是完整的文件。

它返回的输出:

[ 'That',
'That',
index: 0,
input: 'That\'s my testing sample but it doesn\'t work.' ]

根据我测试过的几乎每个网站的输出:

That
my
testing
sample
but
it
doesn
work

如何获取排序数组中的每个单独结果?

附:match()test()是“不是函数”。

最佳答案

要使用 g 标志获取多个结果,请多次调用 .exec(),如下所示:

let regex = /([A-Z]{2,})+/gim;
let str = "That's my testing sample but it doesn't work.";
let results;

while ((results = regex.exec(str)) !== null) {
console.log(results[0]);
}

Javascript 将在正则表达式对象上设置 .index 属性,以跟踪它在源字符串中的搜索位置,并且每次调用它时,它都会返回下一组结果。

注意:当使用正则表达式 /something/ 的文字形式时,不要将其放入 new RegExp() 构造函数中。使用文字语法时,该语言会自动使您成为正则表达式对象。

<小时/>

仅供引用,您无需使用 while 即可获取所有匹配项,如下所示:

let re = /([A-Z]{2,})+/gim;
let str = "That's my testing sample but it doesn't work.";
console.log(str.match(re));

这通常是更简单的方法,除非您需要从正则表达式中获取组。如果您需要分组而不仅仅是整个匹配,那么您必须使用 .exec() 形式来获取多个匹配,每个匹配有多个组。

关于javascript - RegExp 不会产生预期的结果,但它在其他地方都会产生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48174728/

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