正则表达式帮助提取带引号的值

本文关键字:帮助 提取 正则表达式 | 更新日期: 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'?"");" />

希望这很清楚,任何人都可以帮助!!

正则表达式帮助提取带引号的值

我不确定这个正则表达式的效率,但这里有一个与您的字符串相匹配。

规则

  1. 数字两边的引号是可选的,可以是单引号。
  2. html 两边的引号是可选的,可以是单引号。
  3. 问号后的空格可以是 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]*'?)匹配引号内的数字,后跟可选空格和 ?。
第二部分['"]<[^><]*>['"]匹配引号和<>内的任何符号(<、>除外)。

此解决方案的一个缺点是匹配的结果用引号括起来。
希望它能帮助您实现所需的内容。