如何在Javascript Regex中捕获组?

时间:2018-01-26 01:10:16

标签: javascript regex

我正在尝试从文本字符串末尾的customer.name中捕获hello @customer.name

然而,我似乎无法获得@字符。它给出了@customer.name

现在我的正则表达式是:

@([0-9a-zA-Z.]+)$

2 个答案:

答案 0 :(得分:2)

使用字符串的.match方法。如果与给定的正则表达式不匹配,结果将是null,否则它将是一个数组:

  • 第一个元素是整个匹配的字符串,在您的情况下为@customer.name
  • 其余元素均为捕获组。您有一个捕获组,以便最终在第一个索引中。在您的情况下,这将是customer.name,即您想要的字符串。

请参阅此代码段。您的正则表达式看起来已经正确,您只需要从中拉取捕获组而不是整个匹配的字符串。

const str = "hello @customer.name"
const reg = /@([0-9a-zA-Z.]+)$/;

const match = str.match(reg)
console.log(match)
console.log("Matched string:", match[0]);
console.log("First capture group:", match[1]);

答案 1 :(得分:2)

你的正则表达式工作正常,这里有一些代码使用它来使用正则表达式.exec函数访问你的捕获组。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec



let testString ='hello @customer.name',
    pattern = /@([0-9a-zA-Z.]+)$/,
    match = pattern.exec(testString);
    
console.log(match[1]); // abc