如果我有这个字符串
str = "22px";
我该如何仅提取数字22呢?谢谢。
str = "22px";
我该如何仅提取数字22呢?谢谢。
str = "22px";
num = parseInt(str, 10); // pass in the radix for safety :)
assert(num === 22);
str.match(/(-?[\d.]+)([a-z%]*)/)
正则表达式解释:
(-?[\d.]+)
.. 匹配可选的 "-" ,然后是数字或点([a-z%]*)
.. 匹配直接跟在数字后面的所有字母或 % 符号下面是一个示例函数,它返回特定部分:
function parseVal(str) {
res = str.match(/(-?[\d.]+)([a-z%]*)/);
return {
val: parseFloat(res[1]),
unit: res[2]
}
}
parseVal( '12px' ) // { val: 12, unit: 'px' }
parseVal( '-20.5%' ) // { val: -20.5, unit: '%' }
parseVal( '22.75em' ) // { val: 22.75, unit: 'em' }
parseVal( '1234' ) // { val: 1234, unit: '' }
parseVal( 'margin-top: -50px;' ) // { val: -50, unit: 'px' }
margin-top:
和 ;
被剥离掉。parseVal("...") // { val: NaN, unit: "" }
parseVal("2.3.4.5pxpxpx") // { val: 2.3, unit: "pxpxpx" }
parseVal("dummy") // TypeError!
试试这个...
parseInt("22px");
12.5em
这样的浮点值,那么请使用 parseFloat(str)
。注意:该解决方案也适用于负值,例如 -22px
(如“margin-top: -22px”)。 - Philipp"22px".substring(0,2); // returns "22"
但是这仅适用于数字始终为两位数的情况。
我认为你可以直接使用 str.substring(0, 2)
。