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

标签 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 代码却产生不同的结果?

最佳答案

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

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

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

关于javascript - Regex101 和 Js 正则表达式搜索显示不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43457366/

相关文章:

javascript - 根据$(document).width()加载Google广告代码

javascript - 如何在弹出和内联模式下使用 Kendo UI Grid?

regex - Angular 和文本掩码 : Regex to validate an input without special characters

regex - 如何 grep 包含两次或多次列出特定字母的单词列表?

c# - 使用 String.split() 来提取数字?

java - 分割字符串java返回值

python - 如何将字符串转换回列表

javascript - 在 HTML 表格的每个单元格中播放音频

javascript - 放大时 HTML 元素错位

java - Android:通过Regex方法传递文本,并显示在EditText上