javascript - css 字体声明的正则表达式

标签 javascript css regex

这是css中的字体声明:

font: bold italic small-caps 1em/1.5em verdana,sans-serif;

这是一个用于获取 px 值的正则表达式:

value.match(/(normal|italic)?\s*(normal|small-caps)?\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\s*(\d+)px(?:\/(normal|[\d\.]+))?\s+(.*)/);

并帮助我得到这个:

  var fontStyle = match[1],
       // font variant is not used
       // fontVariant = match[2],
       fontWeight = match[3],
       fontSize = match[4],
       lineHeight = match[5],
       fontFamily = match[6];

我想解析字体大小或行高的任何值,而不仅仅是 px,但是

[px|cm|mm|em|pt|pc|in]

但我无法修改它。 有人可以帮忙吗?

最终结果:

(normal|italic)?\s*(normal|small-caps)?\s*(normal|bold|bolder|lighter|100|200|30‌​0|400|500|600|700|800|900)?\s*(\d+(?:px|cm|mm|em|pt|pc|in)*)(?:\/(normal|[\d\.]+)‌​)?\s+(.*) 

最佳答案

不要使用正则表达式解析 CSS。相反,让引擎去做——它已经完美地知道该怎么做!!

var elt = document.createElement('div');
elt.style.font = '1em sans-serif';
// individual properties can now be accessed as elt.style.fontFamily etc.

['fontFamily', 'fontSize'].forEach(function(x) { 
    document.writeln(x, " is ", elt.style[x], ". "); });

但是,要使其正常工作,font 规范的格式必须正确(以正确的顺序)。参见 https://developer.mozilla.org/en-US/docs/Web/CSS/font .

关于javascript - css 字体声明的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26605584/

相关文章:

javascript - 在多个框架中使用变量

javascript - 使用外部javascript,控制f4player中的播放、停止、暂停等

javascript - 使用 JQuery 从模态( Bootstrap )传递输入数组

javascript - fadeIn/FadeOut 与 bootstrap (CSS) 重叠的 div

php - 如何将 ereg() 表达式转换为 preg_match() 表达式?

c# - c#中保留字符的正则表达式问题

python - 如何: Overlapping match

JavaScript 添加后缀到今天的日期

javascript - Bootstrap : popover on modals

html - 无法从列表中删除 CSS 元素符号