JavaScript从string中获取数字
我有一个JavaScript的string像`#box2',我只想从它'2'。
尝试:
var thestring = $(this).attr('href'); var thenum = thestring.replace( /(^.+)(\w\d+\w)(.+$)/i,'$2'); alert(thenum); 它仍然返回#box2在警报中,我怎么能得到它的工作?
它需要容纳任何长度的数字结尾。
对于这个具体的例子,
  var thenum = thestring.replace( /^\D+/g, ''); // replace all leading non-digits with nothing 
在一般情况下:
  thenum = "foo3bar5".match(/\d+/)[0] // "3" 
由于这个答案由于某种原因而得到普及,这里有一个奖励:正则expression式生成器。
 function getre(str, num) { if(str === num) return 'nice try'; var res = [/^\D+/g,/\D+$/g,/^\D+|\D+$/g,/\D+/g,/\D.*/g, /.*\D/g,/^\D+|\D.*$/g,/.*\D(?=\d)|\D+$/g]; for(var i = 0; i < res.length; i++) if(str.replace(res[i], '') === num) return 'num = str.replace(/' + res[i].source + '/g, "")'; return 'no idea'; }; function update() { $ = function(x) { return document.getElementById(x) }; var re = getre($('str').value, $('num').value); $('re').innerHTML = 'Numex speaks: <code>' + re + '</code>'; } 
 <p>Hi, I'm Numex, the Number Extractor Oracle. <p>What is your string? <input id="str" value="42abc"></p> <p>What number do you want to extract? <input id="num" value="42"></p> <p><button onclick="update()">Insert Coin</button></p> <p id="re"></p> 
您应该尝试以下操作:
 var txt = "#div-name-1234-characteristic:561613213213"; var numb = txt.match(/\d/g); numb = numb.join(""); alert (numb); 
结果
 1234561613213213 
使用匹配function。
 var thenum = thestring.match(/\d+$/)[0]; alert(thenum); 
的jsfiddle
我认为这个正则expression式可以达到你的目的:
 var num = txt.replace(/[^0-9]/g,''); 
 其中txt是你的string。 
它基本上撕掉任何不是一个数字。
我想你也可以用这个来达到同样的效果:
 var num = txt.replace(/\D/g,''); 
  尝试了上面引用的所有组合,并得到它的工作,是唯一一个工作在该string – > (12) 3456-7890 
 var str="(12) 3456-7890"; str.replace( /\D+/g, ''); 
  结果: "1234567890" 
Obs:我知道像这样的string不会在attr上,但是无论如何,解决scheme更好,因为它更完整。
 尝试以下方法: string.replace(/[^0-9]/g, ''); 
 function retnum(str) { var num = str.replace(/[^0-9]/g, ''); return num; } retnum('abca12bc45qw') => '1245' retnum('#box2') => '2' retnum('foo3bar5') => '35' 
这是一个摘录价格与货币和格式:
 var price = "£1,739.12"; parseFloat(price.replace( /[^\d\.]*/g, '')); // 1739.12 
你可以使用很好的parseInt方法
它会将前导数字转换为数字
 parseInt("-10px"); // will give you -10 
使用正则expression式 ,如何从string中获取数字,例如:
 String myString = "my 2 first gifts were made by my 4 brothers"; myString = myString .replaceAll("\\D+",""); System.out.println("myString : " + myString); 
  myString的结果是“ 24 ” 
你可以在这里看到这个运行代码的例子: http : //ideone.com/iOCf5G
 对于像#box2这样的string,这应该工作: 
 var thenum = thestring.replace(/^.*(\d+).*$/i,'$1'); 
的jsfiddle:
你可以使用正则expression式。
 var txt="some text 2"; var numb = txt.match(/\d/g); alert (numb); 
这将提醒2。
您可以使用下划线string库如下
 var common="#box" var href="#box1" _(href).strRight(common) 
结果将是:1
请参阅: https : //github.com/epeli/underscore.string
  DEMO: 
  http://jsfiddle.net/abdennour/Vyqtt/ 
  HTML代码: 
 <p> <a href="#box1" >img1</a> <a href="#box2" >img2</a> <a href="#box3" >img3</a> <a href="#box4" >img4</a> </p> <div style="font-size:30px"></div> 
JS代码:
 var comm="#box" $('a').click(function(){ $('div').html(_($(this).attr('href')).strRight(comm))}) 
如果你有后缀如下:
 href="box1az" 
你可以使用下一个演示:
http://jsfiddle.net/abdennour/Vyqtt/1/
 function retrieveNumber(all,prefix,suffix){ var left=_(all).strRight(prefix); return _(left).strLeft(suffix); } 
这是一个solt。 检查没有数据
 var someStr = 'abc'; // add 123 to string to see inverse var thenum = someStr.match(/\d+/); if (thenum != null ) { console.log(thenum[0]); } else { console.log('no number'); } 
使用这一行代码获取string中的第一个数字而不会出现错误:
 var myInt = parseInt(myString.replace(/^[^0-9]+/, ''), 10); 
请检查下面的javaScripts,在那里你只能得到数字
 var txt = "abc1234char5678#!9"; var str = txt.match(/\d+/g, "")+''; var s = str.split(',').join(''); alert(Number(s));