如何从数字+;使用JavaScript的度量单位字符串?
如果我有这根绳子如何从数字+;使用JavaScript的度量单位字符串?,javascript,string,Javascript,String,如果我有这根绳子 str = "22px"; 如何提取数字22?谢谢。你可以试试str.match(/\d+/) 试试这个 parseInt("22px"); 但这只适用于数字始终为2位的情况。我认为您可以直接使用str.substring(0,2)如果您想要一个实际的数字,您应该尝试parseInt()。它将负责为您取下“px” str = "22px"; num = parseInt(str, 10); // pass in the radix for safety :) asser
str = "22px";
如何提取数字22?谢谢。你可以试试str.match(/\d+/) 试试这个
parseInt("22px");
但这只适用于数字始终为2位的情况。我认为您可以直接使用
str.substring(0,2)
如果您想要一个实际的数字,您应该尝试parseInt()。它将负责为您取下“px”
str = "22px";
num = parseInt(str, 10); // pass in the radix for safety :)
assert(num === 22);
这里有一个正则表达式,它将值从单位中拆分。它也适用于负值和十进制数:
str.match(/(-?[\d.]+)([a-z%]*)/)
Regex解释说:
。。抓取一个可选的“-”,后跟数字或点(?[\d.]+)
。。查找直接跟在数字后面的所有字母或%符号([a-z%]*)
函数parseVal(str){
res=str.match(/(?[\d.]+)([a-z%]*)/);
返回{
val:parseFloat(res[1]),
单位:res[2]
}
}
parseVal('12px')/{val:12,单位:'px'}
parseVal('-20.5%')/{val:-20.5,单位:''}
parseVal('22.75em')/{val:22.75,单位:'em'}
parseVal('1234')/{val:1234,单位:''}
parseVal('margin top:-50px;')/{val:-50,单位:'px'}
上面的最后一个示例显示了正则表达式的“智能”程度:它忽略开头的所有非数值和结尾的多余字符,即边距顶部:
和代码>被剥离
注意
正则表达式非常简单。当它接收到无效值时,将返回意外结果:
parseVal(“…”)/{val:NaN,单位:'}
parseVal(“2.3.4.5pxpx”)/{val:2.3,单位:“px”}
parseVal(“dummy”)//类型错误!
你能说更多你想要的吗?要查找第一个非数字字符之前的所有数字吗?还是你想在“px”之前找到所有东西?或者别的什么?一个比我更好的解决方案。。。如果我对我的reg表达式感兴趣,我会建议这条路线……谢谢,哪里是学习javascript的reg表达式的最好地方?一个相当不错的网站是regular-expressions.info。它还有一个javascript正则表达式测试程序。这是最干净、最快的解决方案。如果处理浮点值,如12.5em
,则使用parseFloat(str)
。注:此解决方案也适用于负值,如-22px
(如“页边距顶部:-22px”)
str.match(/(-?[\d.]+)([a-z%]*)/)