首页 > 解决方案 > 使用 jQuery 或 Javascript 获取括号内的字符串

问题描述

我需要在圆括号内获取字符串的一部分,例如字符串可以是:

FirstName LastName ( myemail@address.org )

我正在使用以下代码:

let string = 'FirstName LastName ( myemail@address.org )';
const regExp = /(([^()]*))/g;
let email = string.match(regExp);

当我尝试获取并打印电子邮件变量时,我得到了这个:

FirstName LastName ,,myemail@address.org,,

我的代码有什么问题?非常感谢您的帮助。

标签: javascriptjqueryregex

解决方案


我的代码有什么问题?

你的模式是错误的,这就是你得到错误结果的原因。可能你想匹配你的模式((([^()]*)))中除了括号之外的所有东西,但这也匹配括号外的所有字符串,所以这就是为什么你FirstName LastName ,,myemail@address.org,,根据你的模式输出得到的结果实际上是正确的。这是除括号外的所有内容。

您可以使用此模式:(?<=\().*?(?=\))

解释:

  • (?<=\()这被称为积极的向后看,并回头检查(不匹配只是检查)里面的模式是否在后面?如果是则继续匹配。

  • .*?匹配所有内容零次或多次。

  • (?=\))这被称为正向前瞻,并向前检查(不匹配仅检查)其中的模式是否在前面?如果是则继续匹配。

因此,总体而言,此模式搜索首先以开头(然后匹配所有内容的字符串,直到下一个字符为).

见正则表达式演示

代码:

let string = 'FirstName LastName ( myemail@address.org )';
const regExp = /(?<=\().*?(?=\))/g;
let email = string.match(regExp);
console.log(email[0].trim());


推荐阅读