正则表达式帮助提取带引号的值
本文关键字:帮助 提取 正则表达式 | 更新日期: 2023-09-27 18:31:34
我一直在尝试为字符串创建正则表达式将近一天,但仍然没有让它工作,有人可以帮忙吗?
string example (double quotes are options, and can also be single quotes):
"234"? "<img src='"http://abc.com/a.jpg'" onclick='"alert('"'"working with 'quotes'?'"'");'" />"
and the following groups should be extracted:
234
<img src="http://abc.com/a.jpg" onclick="alert(""working with 'quotes'?"");" />
希望这很清楚,任何人都可以帮助!!
我不确定这个正则表达式的效率,但这里有一个与您的字符串相匹配。
规则
- 数字两边的引号是可选的,可以是单引号。
- html 两边的引号是可选的,可以是单引号。
- 问号后的空格可以是 0 或多个。
输入
"234"? "<img src='"http://abc.com/a.jpg'" onclick='"alert('"'"working with 'quotes'?'"'");'" />"
正则表达式
^['"]?(?<number>'d+)['"]?'?'s*['"]?(?<html>'<.*'>)['"]?$
输出组
number: 234
html: <img src='"http://abc.com/a.jpg'" onclick='"alert('"'"working with 'quotes'?'"'");'" />
这是一个
快速的解决方案(在JavaScript中):
var s = "'"234'"? '"<img src='"http://abc.com/a.jpg'" onclick='"alert('"'"working with 'quotes'?'"'");'" />'"";
var matches = s.match(/['"]['d]*['"](?=['s]*'?)|['"]<[^><]*>['"]/ig);
第一部分['"]['d]*['"](?=['s]*'?)
匹配引号内的数字,后跟可选空格和 ?。
第二部分['"]<[^><]*>['"]
匹配引号和<>内的任何符号(<、>除外)。
此解决方案的一个缺点是匹配的结果用引号括起来。
希望它能帮助您实现所需的内容。