जांचें कि क्या इनपुट स्ट्रिंग में जावास्क्रिप्ट में एक संख्या है


137

मेरा अंतिम लक्ष्य एक इनपुट क्षेत्र को मान्य करना है। इनपुट अल्फाबेटिक या न्यूमेरिक हो सकता है।


4
उसके लिए आपको jQuery की आवश्यकता नहीं है।
55इम विद

कृपया अपने प्रश्न के शीर्षक को संपादित करें, जैसे "jQuery इनपुट केवल वर्णमाला वर्णों को मान्य करता है" क्योंकि आपका विवरण "कैसे एक स्ट्रिंग में संख्याओं को खोजने के लिए" पर कोई जवाब नहीं देता है, इसलिए यह हमारे समुदाय के लिए एक अप्रासंगिक खोज परिणाम है। धन्यवाद!
जुआनमा गुरेरो

प्रश्न शीर्षक से "jQuery" को संपादित किया, और "जावास्क्रिप्ट" से बदल दिया।
वीकेन

@ वीकेन, शीर्षक पर टैग लगाना आवश्यक नहीं है।
स्टारएक्स

@Starx ने कहा, मैं सिर्फ उस प्रारूप को रख रहा हूं जिस पर प्रश्न पोस्टर शुरू हुआ था।
वीकेन

जवाबों:


288

यदि मैं गलत नहीं हूं, तो प्रश्न में "संख्या शामिल है" की आवश्यकता है, न कि "संख्या है"। इसलिए:

function hasNumber(myString) {
  return /\d/.test(myString);
}

1
बिल्कुल वही जो मुझे चाहिए था। धन्यवाद
AndyH

यह समाधान गैर-पूर्णांक संख्या जैसे 3.2 या 1e4
ekkis

8
ऐसा होता है। कंसोल में चेक करें: hasNumber ("check 3.2 या 1e4") = true vs hasNumber ("कोई संख्या नहीं जांचें") = false। क्योंकि 3.2 और 1e4 में ही नंबर होते हैं।
ज़ोन

यह उत्तर शीर्ष पर क्यों नहीं है?
राकेश नायर

यह वास्तव में पूछे गए प्रश्न का उत्तर देता है।
ज़ोन

108

आप जावास्क्रिप्ट का उपयोग करके ऐसा कर सकते हैं। Jquery या Regex की कोई आवश्यकता नहीं है

function isNumeric(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

लागू करते समय

var val = $('yourinputelement').val();
if(isNumeric(val)) { alert('number'); } 
else { alert('not number'); }

अपडेट: यह जांचने के लिए कि क्या किसी स्ट्रिंग में नंबर हैं, आप ऐसा करने के लिए नियमित अभिव्यक्ति का उपयोग कर सकते हैं

var matches = val.match(/\d+/g);
if (matches != null) {
    alert('number');
}

2
matches != nullमतलब नहीं है undefinedया nullजबकि matches !== nullविशेष रूप से नहीं nullबल्कि गुजरता है undefined
नैट

match()एक सरणी देता है या null। तो if (matches !== null)ठीक होना चाहिए (और यह JSHint को खुश करेगा।) स्रोत: developer.mozilla.org/en/docs/Web/JavaScript/Reference/…
जेसन

यह isFinite(parseFloat(n))पहले उदाहरण में होना चाहिए । isNumeric("5,000")विफल रहता है।
m.spyratos

@ m.spyratos, ठीक है, isFinite()सच है अगर पारित मूल्य एक finiteसंख्या है और संख्या संख्या 5,000का एक स्वरूपित स्ट्रिंग है न कि परिमित संख्या।
Starx

@ स्टार्क्स, मैं सहमत हूं। लेकिन अगर आप इनपुट के रूप में स्वरूपित स्ट्रिंग का समर्थन नहीं करते हैं, तो आप पार्स फ्लोट का उपयोग क्यों करते हैं isNaN? मैं सुझाव दूंगा कि या तो पार्स फ्लोट को हटा दें isNaNया इसे जोड़ने के isFiniteसाथ-साथ शामिल किया जाए।
m.spyratos

22
function validate(){    
    var re = /^[A-Za-z]+$/;
    if(re.test(document.getElementById("textboxID").value))
       alert('Valid Name.');
    else
       alert('Invalid Name.');      
}

मुझे वास्तव में पूछे गए सटीक प्रश्न का उत्तर देने के लिए पूरे प्रश्न को पढ़ना था। प्रश्न शीर्षक थोड़ा भ्रामक है।
नैट

9

यह किसी भी तरह से बुलेटप्रूफ नहीं है, लेकिन इसने मेरे उद्देश्यों के लिए काम किया है और शायद यह किसी की मदद करेगा।

var value = $('input').val();
 if(parseInt(value)) {
  console.log(value+" is a number.");
 }
 else {
  console.log(value+" is NaN.");
 }

Boolean(parseInt(3)) -> true; Boolean(parseInt("3")) -> true; Boolean(parseInt("three")) -> false
एलोन जीतो

5

जावास्क्रिप्ट के साथ नियमित अभिव्यक्ति का उपयोग करना । एक नियमित अभिव्यक्ति खोज पैटर्न का वर्णन करने के लिए एक विशेष पाठ स्ट्रिंग है, जिसे / पैटर्न / संशोधक के रूप में लिखा जाता है, जहां "पैटर्न" स्वयं ही नियमित अभिव्यक्ति है, और "संशोधक" विभिन्न विकल्पों का संकेत देने वाले पात्रों की एक श्रृंखला है। चरित्र वर्ग एक शाब्दिक मैच के बाद सबसे बुनियादी regex अवधारणा है। यह पात्रों के एक छोटे अनुक्रम को पात्रों के एक बड़े सेट से मेल खाता है। उदाहरण के लिए, ऊपरी मामले की वर्णमाला के लिए खड़ा हो सकता है , और किसी भी अंक का मतलब हो सकता है।
         [A-Z]\d

नीचे के उदाहरण से

उदाहरण:

function matchExpression( str ) {
    var rgularExp = {
        contains_alphaNumeric : /^(?!-)(?!.*-)[A-Za-z0-9-]+(?<!-)$/,
        containsNumber : /\d+/,
        containsAlphabet : /[a-zA-Z]/,

        onlyLetters : /^[A-Za-z]+$/,
        onlyNumbers : /^[0-9]+$/,
        onlyMixOfAlphaNumeric : /^([0-9]+[a-zA-Z]+|[a-zA-Z]+[0-9]+)[0-9a-zA-Z]*$/
    }

    var expMatch = {};
    expMatch.containsNumber = rgularExp.containsNumber.test(str);
    expMatch.containsAlphabet = rgularExp.containsAlphabet.test(str);
    expMatch.alphaNumeric = rgularExp.contains_alphaNumeric.test(str);

    expMatch.onlyNumbers = rgularExp.onlyNumbers.test(str);
    expMatch.onlyLetters = rgularExp.onlyLetters.test(str);
    expMatch.mixOfAlphaNumeric = rgularExp.onlyMixOfAlphaNumeric.test(str);

    return expMatch;
}

// HTML Element attribute's[id, name] with dynamic values.
var id1 = "Yash", id2="777", id3= "Yash777", id4= "Yash777Image4"
    id11= "image5.64", id22= "55-5.6", id33= "image_Yash", id44= "image-Yash"
    id12= "_-.";
console.log( "Only Letters:\n ", matchExpression(id1) );
console.log( "Only Numbers:\n ", matchExpression(id2) );
console.log( "Only Mix of Letters and Numbers:\n ", matchExpression(id3) );
console.log( "Only Mix of Letters and Numbers:\n ", matchExpression(id4) );

console.log( "Mixed with Special symbols" );
console.log( "Letters and Numbers :\n ", matchExpression(id11) );
console.log( "Numbers [-]:\n ", matchExpression(id22) );
console.log( "Letters :\n ", matchExpression(id33) );
console.log( "Letters [-]:\n ", matchExpression(id44) );

console.log( "Only Special symbols :\n ", matchExpression(id12) );

बाहर रखा:

Only Letters:
  {containsNumber: false, containsAlphabet: true, alphaNumeric: true, onlyNumbers: false, onlyLetters: true, mixOfAlphaNumeric: false}
Only Numbers:
  {containsNumber: true, containsAlphabet: false, alphaNumeric: true, onlyNumbers: true, onlyLetters: false, mixOfAlphaNumeric: false}
Only Mix of Letters and Numbers:
  {containsNumber: true, containsAlphabet: true, alphaNumeric: true, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: true}
Only Mix of Letters and Numbers:
  {containsNumber: true, containsAlphabet: true, alphaNumeric: true, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: true}
Mixed with Special symbols
Letters and Numbers :
  {containsNumber: true, containsAlphabet: true, alphaNumeric: false, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}
Numbers [-]:
  {containsNumber: true, containsAlphabet: false, alphaNumeric: false, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}
Letters :
  {containsNumber: false, containsAlphabet: true, alphaNumeric: false, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}
Letters [-]:
  {containsNumber: false, containsAlphabet: true, alphaNumeric: true, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}
Only Special symbols :
  {containsNumber: false, containsAlphabet: false, alphaNumeric: false, onlyNumbers: false, onlyLetters: false, mixOfAlphaNumeric: false}

नियमित पैटर्न के साथ जावा पैटर्न मिलान


4

यह जांचने के लिए कि क्या कोई चार नंबर है, बिना ओवरकिलो के, जरूरत के अनुसार अनुकूलित किया जा सकता है।

const s = "EMA618"

function hasInt(me){
  let i = 1,a = me.split(""),b = "",c = "";
  a.forEach(function(e){
   if (!isNaN(e)){
     console.log(`CONTAIN NUMBER «${e AT POSITION ${a.indexOf(e)} => TOTAL COUNT ${i}`)
     c += e
     i++
   } else {b += e}
  })
  console.log(`STRING IS «${b}», NUMBER IS «${c}»`)
  if (i === 0){
    return false
    // return b
  } else {
    return true
    // return +c
  }
}


hasInt(s)


2

इसकी जांच करने का एक तरीका यह है कि आप स्ट्रिंग को लूप करें और जब आप एक नंबर पर हिट करें, तब (या जो आप चाहते हैं, उसके आधार पर सही या गलत) पर लौटें।

function checkStringForNumbers(input){
    let str = String(input);
    for( let i = 0; i < str.length; i++){
              console.log(str.charAt(i));
        if(!isNaN(str.charAt(i))){           //if the string is a number, do the following
            return true;
        }
    }
}

0

आप जावास्क्रिप्ट का उपयोग करके ऐसा कर सकते हैं। Jquery या Regex की कोई आवश्यकता नहीं है

function isNumeric(n) {
  if(!isNaN(n))
    {
     return true
    }
  else
   {
    return false
   }
}

14
Overkill। बस हो सकता हैfunction isNumeric(n) { return !isNaN(n); }
Luca Steeb

यह देखने के लिए भी जांच नहीं करता है कि कोई वर्ण संख्या है या नहीं। लेकिन मैं इससे प्रेरित एक समाधान के बारे में सोच सकता हूं।
टायलर लेज़ेनबी

0

जब यह संख्या इसके निष्पादन को रोकती है तो यह कोड "इन गिविंग स्ट्रिंग में संख्याओं का पता लगाने" में भी मदद करता है ।

function hasDigitFind(_str_) {
  this._code_ = 10;  /*When empty string found*/
  var _strArray = [];

  if (_str_ !== '' || _str_ !== undefined || _str_ !== null) {
    _strArray = _str_.split('');
    for(var i = 0; i < _strArray.length; i++) {
      if(!isNaN(parseInt(_strArray[i]))) {
        this._code_ = -1;
        break;
      } else {
        this._code_ = 1;
      }
    }

  }
  return this._code_;
}

0

parseInt जब पूर्णांक एक पूर्णांक के प्रतिनिधित्व के साथ शुरू होता है, तो पूर्णांक प्रदान करता है:

(parseInt '1a')  is  1

..तो शायद:

isInteger = (s)->
  s is (parseInt s).toString()  and  s isnt 'NaN'

(isInteger 'a') is false
(isInteger '1a') is false
(isInteger 'NaN') is false
(isInteger '-42') is true

मेरे कॉफीस्क्रिप्ट को क्षमा करें।


-1

आप लॉश को भी आज़मा सकते हैं:

const isNumeric = number => 
  _.isFinite(_.parseInt(number)) && !_.isNaN(_.parseInt(number))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.