這是我的問題:我正在研究一系列正則表達式來剖析字體屬性的速記CSS代碼。以下是我迄今爲止:區分基於位置正則表達式的類似值
var style = decl.val.match(/\s*(?:\s*(normal|italic|oblique)){1}/i); style = style ? style[1] : "";
var variant = decl.val.match(/\s*(?:\s*(normal|small-caps))/i); variant = variant ? variant[1] : "";
var weight = decl.val.match(/\s*((?:\s*(?:normal|bold|bolder|lighter|\d+(?:\%|in|cm|mm|em|rem|ex|pt|pc|px))){1})/i); weight = weight ? weight[1] : "";
var size = decl.val.match(/\/\s*((?:\s*(?:xx-small|x-small|small|medium|large|x-large|xx-large|larger|smaller|\d+(?:\%|in|cm|mm|em|rem|ex|pt|pc|px))){1,2})/i); size = size ? size[1] : "";
var height = decl.val.match(/\s*(?:\s*(normal|inherit|\d+(?:\%|in|cm|mm|em|rem|ex|pt|pc|px))){1}/i); height = height ? height[1] : "";
var family = decl.val.match(/\s*(?:\s*([a-zA-Z\-\,\'\"\s]+))(?:,|;)/i); family = family ? family[1] : "";
var values = decl.val.match(/\s*(?:\s*(caption|icon|menu|message-box|small-caption|status-bar)){1}/i); values = values ? values[1] : "";
一切正常,我想,當我嘗試使用以下字符串,除了方式:
font: normal small-caps 120%/120% fantasy, sans-serif;
這導致的風格,變型,重量值,和高度都被設置爲正常:
style --> "normal"
variant --> "normal"
weight --> "normal"
height --> "normal"
這是因爲正則表達式的每種情況下的第一個實例相匹配,並且不檢查,以確保沒有它應該TAK一些其他的價值即它應該是:
style --> "normal"
variant --> "small-caps"
weight --> "120%"
height -->
我希望這是有道理的。如果您有任何問題,請隨時發表評論。感謝您的幫助!
這是什麼'\/\ S *((?:'額外向前大小的斜線,一個錯字? – sln
任何字段是可選的嗎? – sln
@sln是的,我認爲額外的正斜槓可能是一個錯字...我正在複製和粘貼......並且所有的字段都是可選的 –