Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
181 views
in Technique[技术] by (71.8m points)

javascript - 从字符串中提取(“获取”)一个数字(Extract (“get”) a number from a string)

I have a string in javascript like `#box2' and I just want the '2' from it.

(我在javascript中有一个字符串,如`#box2',我只想要它的'2'。)

Tried:

(尝试:)

var thestring = $(this).attr('href');
var thenum = thestring.replace( /(^.+)(wd+w)(.+$)/i,'$2');
alert(thenum);

It still returns #box2 in the alert, how can I get it to work?

(它仍会在警报中返回#box2,我该如何让它工作?)

It needs to accommodate for any length number attached on the end.

(它需要适应末端附加的任何长度编号。)

  ask by user1022585 translate from so

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

For this specific example,

(对于这个具体的例子,)

 var thenum = thestring.replace( /^D+/g, ''); // replace all leading non-digits with nothing

in the general case:

(在一般情况下:)

 thenum = "foo3bar5".match(/d+/)[0] // "3"

Since this answer gained popularity for some reason, here's a bonus: regex generator.

(由于这个答案因某种原因而受到欢迎,这里有一个奖励:正则表达式生成器。)

 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> 


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...