javascript - 如何用正则表达式匹配特定的字符串?

标签 javascript jquery regex

我有一个字符串

var txt="[!Qtextara1] Description1 [@Qtextara1]
        [!Qtextarea2] Description2 [@Qtextarea2]"

我想用正则表达式匹配这个字符串 输出应该是这样的。

{Qtextara1: Description1,  Qtextarea2: Description2} 

可以用正则表达式吗?请帮助我..
提前致谢。

最佳答案

您可以使用以下正则表达式:

\[\!([\s\S]+?)\]\s+([\s\S]+?)\s*\[@\1\]

解释:

  • \[\! - 匹配文字 [!
  • ([\s\S]+?) - 捕获第 1 组以匹配 [] 中的 1 个或多个字符(标签名称,我们将需要它稍后)
  • \]\s+ - 文字 ] 和 1 个或多个空白符号
  • ([\s\S]+?) - 捕获组 2 以捕获(甚至多行)描述
  • \s*\[@\1\] - 匹配 0 个或多个空格,后跟文字 [@,然后是对第一个捕获组的反向引用 (标签名称),然后是文字 ]

参见 demo .

var re = /\[\!([\s\S]+?)\]\s+([\s\S]+?)\s*\[@\1\]/g; 
var test_str = '[!Qtextara1] Long Description Wi[th%^&*\n(Abra# $]Cadabra~!~## 1 [@Qtextara1]\n        [!Qtextarea2] Description2 [@Qtextarea2]';
 
while ((m = re.exec(test_str)) !== null) {
    alert(m[1] + ", " + m[2])
}

关于javascript - 如何用正则表达式匹配特定的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29816982/

相关文章:

javascript - 如何在 JavaScript/jQuery 中为粒子系统重用数组中的对象?

javascript - 通过 JavaScript 对 HTML 表格进行排序的最有效方法是什么?

javascript - 类型错误 : Cannot read property 'length' of undefined in Commerce JS when accessing cart

jQuery 动画不会淡入

javascript - jQuery datepicker 悬停输出日期

regex - BNF 到正则表达式

javascript - 正则表达式:匹配并替换日期

正则表达式 CHECK 约束不适用于 SQL Server

javascript - 改进具有许多子组件的组件的 updateState - Reactjs

javascript - 为什么方法不允许http异常?