正则expression式使用JavaScript来返回数字

如果我有一个string“something12”或“something102”。

我将如何在javascript中使用正则expression式来返回数字部分?

马尔科姆

正则expression式:

var numberPattern = /\d+/g; 'something102asdfkj1948948'.match( numberPattern ) 

这将返回一个包含“102”和“1948948”两个元素的对象。 如你所愿操作。 如果不匹配,则返回null。

假设你不处理复杂的小数,这应该足够了,我想。

您也可以去除所有非数字字符( \D[^0-9] ):

 'abc123cdef4567hij89'.replace(/\D/g, ''); // returns '123456789' 

对于带小数点和减号的数字,我使用这个片段:

  var NUMERIC_REGEXP = /[-]{0,1}[\d.]*[\d]+/g; '2.2px 3.1px 4px -7.6px obj.key'.match(NUMERIC_REGEXP) // return ["2.2", "3.1", "4", "-7.6"] 

更新:

我发现了一个工具,它允许您可视化地编辑正则expression式: JavaScript正则expression式parsing器和可视化器

更新:

这里是另一个你甚至可以debugging正则expression式: 在线正则expression式testing器和debugging器

我想你想从string中获得数字。 在这种情况下,您可以使用以下内容:

 // 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 

如果你只想要数字:

 var value = '675-805-714'; var numberPattern = /\d+/g; value = value.match( numberPattern ).join([]); alert(value); //Show: 675805714 

现在你得到了数字join

给出的答案实际上不符合你的问题,这意味着一个尾随号码。 另外,请记住,你正在收回一个string; 如果你确实需要一个数字,那么结果如下:

 item=item.replace('^.*\D(\d*)$', '$1'); if (!/^\d+$/.test(item)) throw 'parse error: number not found'; item=Number(item); 

如果您正在处理网页上的数字项ID,您的代码还可以有用地接受一个Element ,从其id (或其第一个父id )中提取数字; 如果你有一个方便的Event ,你也可以从中获得Element

 var result = input.match(/\d+/g).join([])