我有一个字符串,包含我的名字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
,则它将突出显示chris
和cattano
。这是我所期望的行为。在我的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为什么显示我的匹配符合我的期望,
chris
和cattano
,但是我的Javascript代码产生了不同的结果? 最佳答案
即使您将正则表达式与RegExp#exec()
修饰符一起使用,g
也仅返回单个匹配对象。
您可以将String#match
与带有g
修饰符的正则表达式一起使用,以获取所有匹配值:
var match: string[] = 'christiancattano'.match(regExObj)