我有一个由我的名字 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)
关于javascript - Regex101 和 Js 正则表达式搜索显示不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43457366/