I have attributes which denotes "5 px", "8px" "6em" and possible some others which I currently cannot think of right now. I'm interested in only the numeric value (ie 5, 8 or 6.) I kn开发者_运维百科ow i can do some regex but I'm wondering is there a short, documented, cross browser and readable jquery / javascript function out there which already provides this?
regards, Jeroen.
PS not sure if the wording in the title is correct please advice for alternatives.
Use parseInt
function:
var str = '5px';
alert(parseInt(str, 10)); // 5
Note that second argument of 10
represents base 10 there.
In case they ever come back as 08px
, (leading zero), use the radix of 10
. Otherwise parseint()
thinks your number is in octal.
var value = parseInt(str, 10);
It is probably never going to happen being returned from jQuery as a CSS property value, but a good habit to get into.
A combination of parseInt/parseFloat (see the other answers) is probably your best bet, but just for kicks (and if you want to make your code completely unreadable), you can always use a Regex with extra cheese:
+(str.match(/(-?\d+(?:\.\d+)?)/)||[,0])[1]
The + operator converts the result to a Number, ||[,0]
provides a default array if there's no number in str
. [,0]
might not work in all browsers, but [0,0]
will.
:)
精彩评论