[javascript] 문자열에서 숫자 추출 (“get”)

`# 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"

이 답변이 어떤 이유로 인기를 얻었으므로 여기에 보너스가 있습니다 : 정규식 생성기.

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


답변

나는이 정규 표현이 당신의 목적에 도움이 될 것이라고 생각합니다 :

var num = txt.replace(/[^0-9]/g,'');

txt당신의 줄은 어디에 있습니까 ?

기본적으로 숫자가 아닌 것을 버립니다.

나는 이것을 사용하여 동일한 것을 달성 할 수 있다고 생각합니다.

var num = txt.replace(/\D/g,'');


답변

다음을 시도하십시오. string.replace(/[^0-9]/g, '');이것은 숫자가 아닌 모든 문자를 삭제하고 문자열에는 숫자 만 남겨 둡니다.

function retnum(str) {
    var num = str.replace(/[^0-9]/g, '');
    return parseInt(num,10);
}

console.log('abca12bc45qw'.replace(/[^0-9]/g, ''));
console.log('#box2'.replace(/[^0-9]/g, ''));


답변

일치 기능을 사용합니다.

var thenum = thestring.match(/\d+$/)[0];
alert(thenum);

jsfiddle


답변

이 코드와 함께 위에서 인용 한 모든 조합을 시도 하고 작동 시켰습니다. 유일한 문자열에서 작동했습니다->(12) 3456-7890

var str="(12) 3456-7890";
str.replace( /\D+/g, '');

결과: "1234567890"

Obs : 그런 문자열이 attr에 있지는 않지만 해결책은 더 완벽하기 때문에 더 좋습니다.


답변

그리고 이것은 통화와 서식으로 가격을 추출하는 스 니펫입니다.

var price = "£1,739.12";
parseFloat(price.replace( /[^\d\.]*/g, '')); // 1739.12