使用 jQuery 或 Javascript 获取括号内的字符串
Posted
技术标签:
【中文标题】使用 jQuery 或 Javascript 获取括号内的字符串【英文标题】:Get string inside parentheses using jQuery or Javascript 【发布时间】:2021-10-15 16:24:57 【问题描述】:我需要在圆括号内获取字符串的一部分,例如字符串可以是:
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,,
我的代码有什么问题? 非常感谢您的帮助。
【问题讨论】:
当你不想要它们的特殊功能时,你必须转义像( )
这样的特殊字符。
这能回答你的问题吗? Regular Expression to get a string between parentheses in javascript
@Andreas Um no...括号在字符类中,因此不需要转义。
@TimBiegeleisen 有两组(( ... ))
不属于字符类。其中任何一个都没用或应该转义
@Andreas Pointless 也许......但它们只是嵌套的捕获组。你的cmets都错了。
【参考方案1】:
我的代码有什么问题?
您的模式是错误的,这就是您得到错误结果的原因。
可能您想匹配模式中除括号之外的所有内容((([^()]*))
),但这也匹配括号外的所有字符串,这就是为什么您根据模式输出得到FirstName LastName ,,myemail@address.org,,
实际上是正确的。这是除了括号之外的所有内容。
你可以使用这个模式:(?<=\().*?(?=\))
解释:
(?<=\()
这称为positive lookbehind 并回头检查(不匹配仅检查)其中的模式是否在后面?如果是则继续匹配。
.*?
匹配所有内容零次或多次。
(?=\))
这被称为positive lookahead 并期待检查(不匹配只是检查)其中的模式是否在前面?如果是则继续匹配。
因此,总体而言,此模式搜索首先以 (
开头的字符串,然后匹配所有内容,直到下一个字符为 )
。
见正则表达式Demo
代码:
let string = 'FirstName LastName ( myemail@address.org )';
const regExp = /(?<=\().*?(?=\))/g;
let email = string.match(regExp);
console.log(email[0].trim());
【讨论】:
不是我的 DV,但是当使用(?<=\().*(?=\))
时,这里的 .*
将匹配到最后一次出现 )
请参阅 regex101.com/r/07e8Si/1 我认为它可能类似于 \(\s*([^()]*?)\s*\)
或当它是一封电子邮件\(\s*([^\s@]+@[^\s@]+)\s*\)
谢谢@Thefourthbird,我更新了我的答案。以上是关于使用 jQuery 或 Javascript 获取括号内的字符串的主要内容,如果未能解决你的问题,请参考以下文章
使用 JavaScript 或 jQuery 获取当前月份的第一个和最后一个日期 [重复]
使用 jQuery 或 Javascript 获取括号内的字符串
如何使用 javascript 或 jquery 仅从字符串中获取所有 HTML 标记? [关闭]
如何使用 Javascript 或 Jquery 获取网页图标/ Apple 触摸图标和标题?