我一直在努力为一个字符串创建一个RegEx近一天但仍然没有成功,有人可以帮忙吗?
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'?"");" />
希望这很清楚,任何人都可以帮助!!
答案 0 :(得分:1)
我不确定这个正则表达式的效率,但这里有一个匹配你的字符串。
<强>规则强>
<强>输入强>
"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'?\"\");\" />
答案 1 :(得分:0)
这是一个快速解决方案(在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]*\?)
匹配引号内的数字,后跟可选空格和?。
第二部分['"]<[^><]*>['"]
匹配引号内的任何符号(&lt;,&gt;除外)和&lt;&gt;。
此解决方案的一个缺点是匹配的结果用引号括起来 希望它能帮助您实现所需。