我开始使用Node.js并尝试学习它,来自PHP环境。
我有以下RegExp:/([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
如何在各种排序中获得每个单独的结果?
P.S。:match()
和test()
是"不是功能"。
答案 0 :(得分:1)
要使用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将在regex对象上设置.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()
表单来获得多个匹配,每个匹配都有多个组。