回答:
正規表現:
var numberPattern = /\d+/g;
'something102asdfkj1948948'.match( numberPattern )
これにより、「102」と「1948948」の2つの要素を含む配列が返されます。思い通りに操作してください。一致しない場合はnullを返します。
それらを連結するには:
'something102asdfkj1948948'.match( numberPattern ).join('')
あなたが複素数の小数を扱っていないと仮定すると、これは私が推測することで十分でしょう。
d
ので、.match(/\d+/g)
parseInt('987d98sf79s7f9s8f9sf'.match(/\d+/gi).join(''))
小数とマイナス記号のある数値の場合、次のスニペットを使用します。
var NUMERIC_REGEXP = /[-]{0,1}[\d]*[.]{0,1}[\d]+/g;
'2.2px 3.1px 4px -7.6px obj.key'.match(NUMERIC_REGEXP)
// return ["2.2", "3.1", "4", "-7.6"]
更新:-2018年7月9日
正規表現を視覚的に編集できるツールが見つかりました:JavaScript正規表現パーサー&ビジュアライザー。
更新:
もう1つは、正規表現をデバッガーで使用できるものです。オンラインの正規表現テスターとデバッガーです。
更新:
もう1つ:RegExr。
更新:
数字のみが必要な場合:
var value = '675-805-714';
var numberPattern = /\d+/g;
value = value.match( numberPattern ).join([]);
alert(value);
//Show: 675805714
今、あなたは数字を結合します
文字列から数値を取得したいと思います。その場合、以下を使用できます。
// Returns an array of numbers located in the string
function get_numbers(input) {
return input.match(/[0-9]+/g);
}
var first_test = get_numbers('something102');
var second_test = get_numbers('something102or12');
var third_test = get_numbers('no numbers here!');
alert(first_test); // [102]
alert(second_test); // [102,12]
alert(third_test); // null
get_numbers/1
、数値ではなく文字列の配列を返します。あなたの例では、それが返されます:* ["102"]
* ["102", "12"]
*ヌル
与えられた答えは、実際に暗黙のあなたの質問、一致していない末尾の番号を。また、文字列が返されることを忘れないでください。実際に数値が必要な場合は、結果をキャストします。
item=item.replace('^.*\D(\d*)$', '$1');
if (!/^\d+$/.test(item)) throw 'parse error: number not found';
item=Number(item);
Webページで数値のアイテムIDを処理している場合、コードはを受け入れてElement
、そのid
(またはの最初の親id
)から番号を抽出することもできます。あなたがEvent
便利であれば、おそらくそれElement
からも得ることができます。
IMO 現時点でのChen Dachaoによる3番目の回答は、あらゆる種類の数値をキャプチャする場合に適切な方法ですが、正規表現は次のように短縮できます。
/[-]{0,1}[\d]*[\.]{0,1}[\d]+/g
に:
/-?\d*\.?\d+/g
たとえば、次のコード:
"lin-grad.ient(217deg,rgba(255, 0, 0, -0.8), rgba(-255,0,0,0) 70.71%)".match(/-?\d*\.?\d+/g)
この配列を生成します:
["217","255","0","0","-0.8","-255","0","0","0","70.71"]
MDN線形勾配の例を屠殺して、正規表現を完全にテストし、ここでスクロールする必要がないようにしました。負の数、小数、単位の接尾辞(度や%など)、一貫性のないカンマとスペースの使用、およびテキスト「lin-grad.ient 」何か足りない場合はお知らせください。それが処理しないことを私が見ることができる唯一のことは、「0..8」のような間違った形式の10進数です。
本当に数値の配列が必要な場合は、配列全体を同じコード行で変換できます。
array = whatever.match(/-?\d*\.?\d+/g).map(Number);
CSS関数を解析する私の特定のコードは、ドット/ピリオド文字の非数値的な使用について心配する必要がないため、正規表現をさらに簡単にすることができます。
/-?[\d\.]+/g
分割と正規表現を使用する:
var str = "fooBar0123".split(/(\d+)/);
console.log(str[0]); // fooBar
console.log(str[1]); // 0123
ドット/カンマ区切りの数値も必要な場合は、次のようにします。
\d*\.?\d*
または
[0-9]*\.?[0-9]*
https://regex101.com/を使用して、正規表現をテストできます。