2013-06-05 66 views
5

Đây là giải pháp để xác thực số nguyên. Ai đó có thể vui lòng giải thích logic của Karim's answer.
Điều này hoạt động hoàn hảo, nhưng tôi không thể hiểu được làm thế nào.xác thực chuỗi là số nguyên không âm trong javascript

var intRegex = /^\d+$/; 
if(intRegex.test(someNumber)) { 
    alert('I am an int'); 
    ... 
} 
+1

Tôi nghĩ câu hỏi này tốt hơn nên là nhận xét về câu trả lời đó ... và phải được trả lời ở đó bởi chính @Karim. – Bergi

+1

Lưu ý rằng mã này không hoàn toàn chính xác. Ví dụ, nó xác nhận một chuỗi như '000 ... (10.000 lần) .. 000' mà hầu như không phải là" số ". – georg

Trả lời

11

Các regex: /^\d+$/

^ // beginning of the string 
\d // numeric char [0-9] 
+ // 1 or more from the last 
$ // ends of the string 

khi tất cả chúng đều kết hợp:

Từ đầu những chuỗi cuối cùng có một hoặc nhiều số char [0-9] và chỉ số.

-1

regex này có thể tốt hơn /^[1-9]+\d*$/

^  // beginning of the string 
[1-9] // numeric char [1-9] 
+  // 1 or more occurrence of the prior 
\d // numeric char [0-9] 
*  // 0 or more occurrences of the prior 
$  // end of the string 

cũng sẽ kiểm tra đối với các số nguyên không âm có sẵn đệm bằng zero

+1

Điều này sẽ không thành công trên '0'. –

0

một số nguyên không âm là gì?

Số nguyên không âm số là "số nguyên 0 hoặc dương".

Nguồn: http://mathworld.wolfram.com/NonnegativeInteger.html

Nói cách khác, bạn đang tìm kiếm để xác nhận một số nguyên không âm.

Câu trả lời ở trên không đủ vì chúng không bao gồm các số nguyên như -0-0000, về mặt kỹ thuật, sau khi phân tích cú pháp, trở thành số nguyên không âm. Các câu trả lời khác cũng không xác thực số nguyên với + ở phía trước.

Bạn có thể sử dụng regex sau để xác thực:

/^(\+?\d+|-?0+)$/ 

Try it Online!

Giải thích:

^     # Beginning of String 
    (    # Capturing Group 
      \+?  # Optional '+' Sign 
      \d+  # One or More Digits (0 - 9) 
     |   # OR 
      -?  # Optional '-' Sign 
      0+  # One or More 0 Digits 
    )    # End Capturing Group 
$     # End of String 

Các trường hợp kiểm tra sau trở thành sự thật: -0, -0000, 0, 00000, +0, +0000, 1, 12345, +1, +1234. Các trường hợp kiểm tra sau đây trả về false: -12.3, 123.4, -1234, -1.

Lưu ý:Regex này không hoạt động cho chuỗi số nguyên được viết trong ký hiệu khoa học.

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