正则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([])