我有一个字符串
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/