462

JavaScript に文字列 (例: #box2) があり、そこから を取得したいだけです2

私は試した:

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

それはまだアラートに返さ#box2れます。どうすれば動作させることができますか?

端に取り付けられた任意の長さの数値に対応する必要があります。

4

26 に答える 26

745

この特定の例では、

 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>

于 2012-04-04T01:16:33.743 に答える
279

次のことを試してください。

var txt = "#div-name-1234-characteristic:561613213213";
var numb = txt.match(/\d/g);
numb = numb.join("");
alert (numb);​

結果

1234561613213213
于 2013-01-04T20:37:38.267 に答える
74

以下を試してください: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, ''));

于 2015-06-12T05:12:10.693 に答える
57

マッチ機能を使用。

var thenum = "0a1bbb2".match(/\d+$/)[0];
console.log(thenum);

于 2012-04-04T01:19:24.403 に答える
40

そして、これは通貨とフォーマットで価格を抽出するスニペットです:

var price = "£1,739.12";
parseFloat(price.replace( /[^\d\.]*/g, '')); // 1739.12
于 2015-12-16T11:56:34.197 に答える
34

このコードで上記のすべての組み合わせを試して、それを機能させました。その文字列で機能したのは唯一のものでした->(12) 3456-7890

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

結果: "1234567890"

Obs:そのような文字列が attr に含まれないことはわかっていますが、より完全であるため、ソリューションの方が優れています。

于 2014-01-28T16:12:10.300 に答える
18

優れた parseInt メソッドを使用できます

先頭の数字を数値に変換します

parseInt("-10px");
// will give you -10
于 2014-05-14T09:05:11.830 に答える
10

などの文字列の場合#box2、これは機能するはずです。

var thenum = thestring.replace(/^.*?(\d+).*/,'$1');

jsFiddle:

于 2012-04-04T01:19:22.797 に答える
4

正規表現を使用できます。

var txt="some text 2";
var numb = txt.match(/\d/g);
alert (numb);

それはアラート2になります。

于 2012-04-04T01:20:33.073 に答える
3

これがソルトです。データがないかどうかをチェックする

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');
}
于 2015-07-31T23:00:29.777 に答える
3

抽出された数値にドットを保持する必要がある場合:

var some = '65,87 EUR';
var number = some.replace(",",".").replace(/[^0-9&.]/g,'');
console.log(number); // returns 65.87
于 2020-10-21T00:50:34.527 に答える
2

次の 1 行のコードを使用して、エラーを発生させずに文字列の最初の数値を取得します。

var myInt = parseInt(myString.replace(/^[^0-9]+/, ''), 10);
于 2015-10-08T12:32:15.300 に答える
2

以下のJavaScriptを確認してください。数値のみを取得できます

var txt = "abc1234char5678#!9";
var str = txt.match(/\d+/g, "")+'';
var s = str.split(',').join('');
alert(Number(s));

出力:1234567789

于 2017-04-20T04:43:03.230 に答える
1

数字以外のテキストをすべて削除する "(/\d+/g)" を追加する必要がありますが、この時点ではまだ文字列のままです。変数を作成し、一致を介して「parseInt」を作成すると、新しい変数を配列の値に設定できます。これを機能させる方法の例を次に示します。

    var color = $( this ).css( "background-color" );
    var r = parseInt(color.match(/\d+/g)[0]);
    var g = parseInt(color.match(/\d+/g)[1]);
    var b = parseInt(color.match(/\d+/g)[2]);
于 2020-07-08T02:07:28.030 に答える
1

この回答は、ほとんどのシナリオをカバーします。ユーザーが電話番号をコピーして貼り付けようとすると、この状況を回避できます

  $('#help_number').keyup(function(){
    $(this).val().match(/\d+/g).join("")
  });

説明:

str= "34%^gd 5-67 6-6ds"

str.match(/\d+/g)

出力として文字列の配列を提供します >> ["34", "56766"]

str.match(/\d+/g).join("")

join は、その配列データを変換して単一の文字列に連結します

出力>>「3456766」

私の例では、209-356-6788 として出力が必要なので、replace を使用しました

  $('#help_number').keyup(function(){
    $(this).val($(this).val().match(/\d+/g).join("").replace(/(\d{3})\-?(\d{3})\-?(\d{4})/,'$1-$2-$3'))
  });
于 2020-02-05T07:45:05.743 に答える