Regex101和Js正则表达式搜索显示不同的结果

时间:2017-04-17 18:34:40

标签: javascript regex string

我有一个由我的名字christiancattano组成的字符串和一个如此定义的正则表达式搜索模式

/(cattano|cattan|attano|chris|catta|attan|ttano|chri|hris|catt|atta|ttan|tano|chr|hri|ris|cat|att|tta|tan|ano)+/ig

在regex101中,如果我在顶部栏中输入我的搜索模式,并在测试字符串框中逐字输入christiancattano,则会突出显示chriscattano。这是我期待的行为。

在我的javascript代码中,如果我运行以下行

var regExPattern: string = '(cattano|cattan|attano|chris|catta|attan|ttano|chri|hris|catt|atta|ttan|tano|chr|hri|ris|cat|att|tta|tan|ano)+';

var regExObj: RegExp = new RegExp(regExPattern, 'g');

var match: string[] = regExObj.exec('christiancattano');

console.log(`match: ${match}`);

我收到此输出

match: chris,chris

为什么regex101显示我的匹配符合我的预期,chriscattano,但我的Javascript代码会产生不同的结果?

1 个答案:

答案 0 :(得分:2)

RegExp#exec()仅返回单个匹配对象,即使您使用带有g修饰符的正则表达式。

您可以使用带有String#match修饰符的正则表达式g来获取所有匹配值:

var match: string[] = 'christiancattano'.match(regExObj)