我正在研究以下正则表达式:
var match = string.match(/(?:(normal|italic|oblique))?\s*(?:(normal|small-caps))?\s*(?:((?:normal|bold|bolder|lighter|\d+(?:\%|in|cm|mm|em|rem|ex|pt|pc|px)))\/?)?\s*((?:(?:xx-small|x-small|small|medium|large|x-large|xx-large|larger|smaller|\d+(?:\%|in|cm|mm|em|rem|ex|pt|pc|px))\s*){1,2})?\s*(?:(normal|inherit|\d+(?:\%|in|cm|mm|em|rem|ex|pt|pc|px))\s*)?\s*(?:([a-zA-Z\-\,\'\"\s]+)\s*)?(?:,|;)(?:(caption|icon|menu|message-box|small-caption|status-bar)\s*)?/i);
字符串是:
var string = "font: normal small-caps fantasy, sans-serif;"
我需要将每个值返回到匹配数组中的适当位置,但其中一个匹配太贪心了。结果如下:
match[1] = "normal"
match[2] = "small"
match[6] = "-caps fantasy, sans-serif"
我需要结果:
match[1] = "normal"
match[2] = "small-caps"
match[6] = "fantasy, sans-serif"
希望这是有道理的。谢谢你的帮助。
答案 0 :(得分:0)
使最后一部分不贪婪,而不是([a-zA-Z\-\,\'\"\s]+)
做:
([a-zA-Z\-\,\'\"\s]+?)
没有必要逃避所有这些角色:
([-a-zA-Z,'"\s]+?)