2009-11-22 15 views
159

मैं यह जांचना चाहता हूं कि स्ट्रिंग में केवल अंक हैं या नहीं। मैंने इसका इस्तेमाल किया:जांचें कि स्ट्रिंग में केवल अंक हैं

var isANumber = isNaN(theValue) === false; 

if (isANumber){ 
    .. 
} 

.. लेकिन एहसास हुआ कि यह + और - को भी अनुमति देता है। असल में मैं यह सुनिश्चित करना चाहता हूं कि इनपुट में केवल अंक हैं और कोई अन्य अक्षर नहीं है। चूंकि +100 और -5 दोनों संख्याएं हैं, एनएएनएन, जाने का सही तरीका नहीं है। शायद एक regexp मुझे क्या चाहिए? कोई सुझाव?

उत्तर

348

कैसे

के बारे में
var isnum = /^\d+$/.test(val); 
+4

इस पोस्ट पर एक नज़र डालें ... http://stackoverflow.com/questions/18082/validate -numbers-in-javascript-isnumeric – Jorge

+10

आपको अधिक स्पष्ट होने के लिए \ d- के बजाय [0-9] का उपयोग करना चाहिए। \ d किसी भी प्रकार के अंक से मेल खाने के लिए है, जिसमें अन्य भाषाओं के अलावा, हालांकि मुझे लगता है कि जावास्क्रिप्ट एक अपवाद है जहां \ d केवल 0-9 है। – mukunda

+0

यह बहुत अच्छा है! मैं उत्सुक हूं कि दशमलव को संदर्भित नहीं करता है? उदाहरण के लिए, – dewwwald

2

ठीक है, आप निम्नलिखित regex का उपयोग कर सकते हैं:

^\d+$ 
9
String.prototype.isNumber = function(){return /^\d+$/.test(this);} 
console.log("123123".isNumber()); // outputs true 
console.log("+12".isNumber()); // outputs false 
4

यह तुम क्या चाहते है

function isANumber(str){ 
    return !/\D/.test(str); 
} 
4

तुम भी (डॉट पृथक मान) तो आप इस अभिव्यक्ति का उपयोग कर सकते नाव मूल्यों के लिए समर्थन करना चाहते हैं:

var isNumber = /^\d+\.\d+$/.test(value); 
+0

हालांकि यदि आप एक फ्लोट का उपयोग नहीं करते हैं, तो यह संभवतः "?" का उपयोग करके झूठी वापसी करेगा "। \" के बाद हल हो गया। मैं सुझाव देता हूं कि यह /^\d+[\.,\,]?\d+$/.test(value) दोनों कोमा और पॉइंट दशमलव (बाद में शायद कॉमा को पॉइंट में बदल सकता है) – Lucke

+0

@Lucke, आपके द्वारा सुझाए गए रेगेक्स को केवल तभी होगा दशमलव से 9 या उससे अधिक के साथ संख्याओं को खोजने में सक्षम हो। यदि आप पहले '\ d +' से '\ d *? 'को बदलते हैं, तो यह 0 - 9 से मेल खाता है, साथ ही साथ .333 जैसी संख्याएं भी मिल सकती हैं। –

संबंधित मुद्दे