我想从javascript中的字符串中获取int我如何从
获取它们test1,stsfdf233,fdfk323,
有人向我展示了从这个字符串中获取整数的方法。
规则是int总是在字符串的后面。
我怎么能得到最后在我的字符串中的int
答案 0 :(得分:52)
var s = 'abc123';
var number = s.match(/\d+$/);
number = parseInt(number, 10);
第一步是简单的正则表达式 - \d+$
将匹配结尾附近的数字
在下一步中,我们在之前匹配的字符串上使用parseInt
,以获得正确的数字。
答案 1 :(得分:3)
您可以使用regex通过String#match
提取字符串中的数字,并通过parseInt
将每个数字转换为数字:
var str, matches, index, num;
str = "test123and456";
matches = str.match(/\d+/g);
for (index = 0; index < matches.length; ++index) {
num = parseInt(matches[index], 10);
display("Digit series #" + index + " converts to " + num);
}
如果数字确实仅出现在字符串的末尾,或者您只想转换找到的第一个数字集,则可以简化一下: / p>
var str, matches, num;
str = "test123";
matches = str.match(/\d+/);
if (matches) {
num = parseInt(matches[0], 10);
display("Found match, converts to: " + num);
}
else {
display("No digits found");
}
如果您想忽略不在最后的数字,请将$
添加到正则表达式的末尾:
matches = str.match(/\d+$/);
答案 2 :(得分:2)
var str = "stsfdf233";
var num = parseInt(str.replace(/\D/g, ''), 10);
答案 3 :(得分:1)
var match = "stsfdf233".match(/\d+$/);
var result = 0; // default value
if(match != null) {
result = parseInt(match[0], 10);
}
答案 4 :(得分:1)
又一个替代方案,这次没有任何替换或正则表达式,只是一个简单的循环:
function ExtractInteger(sValue)
{
var sDigits = "";
for (var i = sValue.length - 1; i >= 0; i--)
{
var c = sValue.charAt(i);
if (c < "0" || c > "9")
break;
sDigits = c + sDigits;
}
return (sDigits.length > 0) ? parseInt(sDigits, 10) : NaN;
}
用法示例:
var s = "stsfdf233";
var n = ExtractInteger(s);
alert(n);
答案 5 :(得分:0)
这可能对您有所帮助
var str = 'abc123';
var number = str.match(/\d/g).join("");
答案 6 :(得分:0)
将我的扩展名用于String类:
String.prototype.toInt=function(){
return parseInt(this.replace(/\D/g, ''),10);
}
然后:
"ddfdsf121iu".toInt();
将返回一个整数:121
答案 7 :(得分:0)
第一个正数或负数:
"foo-22bar11".match(/-?\d+/); // -22
答案 8 :(得分:-2)
javascript:alert('stsfdf233'.match(/\d+$/)[0])
带有Global.parseInt
的{p> radix
在这里有点矫枉过正,正则表达式提取十进制数字已经和右边修剪过的字符串