2009-07-26 36 views

Trả lời

139

Regular expressions:

var numberPattern = /\d+/g; 

'something102asdfkj1948948'.match(numberPattern) 

này sẽ trả về một đối tượng với hai yếu tố bên trong, '102' và '1.948.948. Hoạt động như bạn muốn. Nếu nó không phù hợp với bất kỳ nó sẽ trả về null.

Giả sử bạn không xử lý các số thập phân phức tạp, điều này là đủ, tôi cho là vậy.

+2

err. ghét phải là kẻ ngốc nghếch, nhưng điều này trả về một mảng, không phải là một đối tượng (ít nhất là trong chrome). – Maus

+8

Tất cả các mảng là đối tượng mặc dù, không? –

+1

làm thế nào về 'parseInt (chuỗi);' –

6

Tôi đoán bạn muốn lấy (các) số từ chuỗi. Trong trường hợp này, bạn có thể sử dụng như sau:

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

Chỉ cần làm rõ, 'get_numbers/1' trả về một mảng của chuỗi, không phải số. Ví dụ của bạn, nó sẽ trả lại: * '[" 102 "]' * '[" 102 "," 12 "]' * null – sntran

137

Bạn cũng có thể gỡ bỏ tất cả các ký tự không phải chữ số (\D hoặc [^0-9]):

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

Những câu trả lời cho không thực sự phù hợp với câu hỏi của bạn , ngụ ý số trailing. Ngoài ra, hãy nhớ rằng bạn đang nhận được một chuỗi trở lại; nếu bạn thực sự cần một số, đúc kết quả:

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

Nếu bạn đang làm việc với id mục số trên một trang web, mã của bạn cũng có thể hữu ích chấp nhận một Element, chiết xuất từ ​​số của nó id (hoặc cha mẹ đầu tiên của nó với số id); nếu bạn có tiện ích Event, bạn cũng có thể nhận được số Element từ đó.

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

Nếu bạn muốn chỉ số:

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

Bây giờ bạn sẽ có được các chữ số tham gia

9

Đối với số với phần thập phân và dấu trừ, tôi sử dụng đoạn mã này:

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"] 

Cập nhật:

Tôi đã tìm thấy công cụ cho phép bạn chỉnh sửa biểu thức chính quy một cách trực quan: JavaScript Regular Expression Parser & Visualizer.

Cập nhật:

Dưới đây là một số khác mà bạn thậm chí có thể gỡ rối regexp: Online regex tester and debugger.

Cập nhật:

Một số khác: Regexpal.

+0

Giải pháp hoàn hảo duy nhất hoạt động với số thập phân và số âm – ArmaGeddON

+0

Cảm ơn, @ ArmaGeddON, hy vọng nó có thể giúp nhiều người hơn. –

+0

có vẻ như điều này sẽ khớp với những thứ như 0.0.0. Hãy thử di chuyển. bên ngoài khung như thế này [-] {0,1} [\ d] * [\.] {0,1} [\ d] + – Makolyte

Các vấn đề liên quan