正则表达式从字符串中获取十进制值,例如1.4em

时间:2013-04-03 17:39:45

标签: javascript regex decimal css

我一直在挠头,四处搜寻,我似乎无法找到另一个问题,就像我遇到的问题一样。

我有一个变量,例如:

var style = ' font-size: 12px; line-height: 1.4em; ';

我可以很容易地使用(并将此方法用于我需要检索的许多其他值)来提取font-size的值:

var match = /(?:^|\s)font-size\s*:\s*(\d+)px/i.exec( style );
fontsizetest = match && match[1];
console.log(fontsizetest);

但是当我尝试提取行高的值(使用相对的大小调整)时,我会遇到各种问题(主要是由于小数位):

玩了很长一段时间之后,这是我能找到解决方案的最接近的地方:

var match = /(?:^|\s)line-height\s*:\s*(\d|\.|\d*)em/i.exec( style );
lineheighttest = match && match[1];
console.log(lineheighttest);

但这不会返回我的1.4值

非常感谢任何指导我正确方向的想法或建议。我确信有一个简单的解释,但我已经看了太久了?

非常感谢

1 个答案:

答案 0 :(得分:3)

你的问题是你在正则表达式语法方面很弱。

试试这个:

var match = /(?:^|\s)line-height\s*:\s*((?:\d*\.)?\d+)em/i.exec( style );

这会接受像2.81.2这样的数字。