3

只是想知道是否有人有一个久经考验的正则表达式来将一个 css 字体字符串解析成它的各个部分:

  • 12px 宋体
  • 斜体粗体无衬线
  • 12 像素/50 像素绿地
  • ETC
4

2 回答 2

8

回答我自己的问题:

/^\s*(?=(?:(?:[-a-z]+\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\1|\2|\3)\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\d]+(?:\%|in|[cem]m|ex|p[ctx]))(?:\s*\/\s*(normal|[.\d]+(?:\%|in|[cem]m|ex|p[ctx])))?\s*([-,\"\sa-z]+?)\s*$/i

分为:

var       parts = rx.exec( str )
  , fontStyle   = parts[1] || 'normal'
  , fontVariant = parts[2] || 'normal'
  , fontWeight  = parts[3] || 'normal'
  , fontSize    = parts[4]
  , lineHeight  = parts[5]
  , fontFamily  = parts[6]
  ;

是的,我意识到这太疯狂了

于 2012-04-13T06:07:29.510 回答
3

你的意思是这样吗?

如何解析 CSS 字体速记格式

或者,还有JCSSP,一个用于解析 CSS 的 JavaScript 库。

于 2012-04-13T05:38:03.763 回答