javascript (অন্তর্নির্মিত) একটি স্ট্রিং একটি বৈধ সংখ্যা কিনা তা পরীক্ষা করতে জাভাস্ক্রিপ্টে উপায়



validation numeric (20)

আমি আশা করি পুরনো ভিবি 6 IsNumeric() ফাংশন হিসাবে একই ধারণাগত স্থানটিতে কিছু আছে?


আমার আবেদনটিতে আমরা শুধুমাত্র AZ AZ এবং 0-9 অক্ষরগুলি মঞ্জুর করছি। স্ট্রিং % 1 === 0 ব্যবহার করে উপরের উত্তরটি খুঁজে পেয়েছি, যদি স্ট্রিং 0xnn (0x10 এর মতো) দিয়ে শুরু না করে এবং এটি যখন এটি করতে না চায় তখন এটি সংখ্যাসূচক হিসাবে ফিরিয়ে দেবে। আমার সাংখ্যিক চেক নিম্নলিখিত সহজ ফাঁদ আমাদের নির্দিষ্ট ক্ষেত্রে কৌতুক করতে বলে মনে হচ্ছে।

function isStringNumeric(str_input){   
    //concat a temporary 1 during the modulus to keep a beginning hex switch combination from messing us up   
    //very simple and as long as special characters (non a-z A-Z 0-9) are trapped it is fine   
    return '1'.concat(str_input) % 1 === 0;}

সতর্কতা : এটি জাভাস্ক্রিপ্ট এবং অ্যাকশনস্ক্রিপ্টের একটি দীর্ঘতম বাগ শোষণ করা হতে পারে [সংখ্যা ("1" + the_string)% 1 === 0)], আমি এর জন্য কথা বলতে পারি না, কিন্তু এটিই আমাদের প্রয়োজন।


যদি আপনি শুধুমাত্র একটি স্ট্রিং একটি সম্পূর্ণ সংখ্যা (কোন দশমিক স্থান) কিনা তা পরীক্ষা করার চেষ্টা করছেন, regex যেতে একটি ভাল উপায়। যেমন isNaN অন্যান্য পদ্ধতি খুব সহজ কিছু জন্য খুব জটিল।

function isNumeric(value) {
    return /^-{0,1}\d+$/.test(value);
}

console.log(isNumeric('abcd'));         // false
console.log(isNumeric('123a'));         // false
console.log(isNumeric('1'));            // true
console.log(isNumeric('1234567890'));   // true
console.log(isNumeric('-23'));          // true
console.log(isNumeric(1234));           // true
console.log(isNumeric('123.4'));        // false
console.log(isNumeric(''));             // false
console.log(isNumeric(undefined));      // false
console.log(isNumeric(null));           // false

শুধুমাত্র ইতিবাচক সম্পূর্ণ সংখ্যাগুলি ব্যবহার করার জন্য এটি ব্যবহার করুন:

function isNumeric(value) {
    return /^\d+$/.test(value);
}

console.log(isNumeric('123'));          // true
console.log(isNumeric('-23'));          // false

পুরানো প্রশ্ন, কিন্তু প্রদত্ত উত্তরগুলিতে অনেকগুলি পয়েন্ট অনুপস্থিত।

বৈজ্ঞানিক স্বরলিপি.

!isNaN('1e+30') true , তবে বেশিরভাগ ক্ষেত্রে যখন লোকেরা সংখ্যাকে জিজ্ঞাসা করে, তারা 1e+30 মতো জিনিসগুলি মেলে না।

বড় ভাসমান সংখ্যা অদ্ভুত আচরণ করতে পারে

পর্যবেক্ষণ করুন (Node.js ব্যবহার করে):

> var s = Array(16 + 1).join('9')
undefined
> s.length
16
> s
'9999999999999999'
> !isNaN(s)
true
> Number(s)
10000000000000000
> String(Number(s)) === s
false
>

অন্য দিকে:

> var s = Array(16 + 1).join('1')
undefined
> String(Number(s)) === s
true
> var s = Array(15 + 1).join('9')
undefined
> String(Number(s)) === s
true
>

সুতরাং, যদি কেউ String(Number(s)) === s সংখ্যাগুলি String(Number(s)) === s প্রত্যাশা করে তবে তার স্ট্রিংগুলিকে সর্বাধিক 15 সংখ্যার উপরে সীমাবদ্ধ করুন (শীর্ষস্থানীয় শূন্যগুলি বাদ দেওয়ার পরে)।

অনন্ত

> typeof Infinity
'number'
> !isNaN('Infinity')
true
> isFinite('Infinity')
false
>

যে সব দেওয়া, দেওয়া স্ট্রিং একটি সংখ্যা নিম্নলিখিত সব সন্তোষজনক সন্তুষ্ট:

  • অ বৈজ্ঞানিক সংকেত
  • Number এবং ফিরে String প্রত্যাশিত রূপান্তর
  • সসীম

যেমন একটি সহজ কাজ না। এখানে একটি সহজ সংস্করণ:

  function isNonScientificNumberString(o) {
    if (!o || typeof o !== 'string') {
      // Should not be given anything but strings.
      return false;
    }
    return o.length <= 15 && o.indexOf('e+') < 0 && o.indexOf('E+') < 0 && !isNaN(o) && isFinite(o);
  }

যাইহোক, এমনকি এই এক সম্পূর্ণ থেকে। নেতৃস্থানীয় জিরো এখানে পরিচালনা করা হয় না, কিন্তু তারা দৈর্ঘ্য পরীক্ষা স্ক্রু না।


আমি পরীক্ষা করেছি এবং মাইকেল এর সমাধান সেরা। উপরে তার উত্তরের জন্য ভোট দিন (এই পৃষ্ঠাটি অনুসন্ধান করুন "যদি আপনি সত্যিই এটি নিশ্চিত করতে চান যে স্ট্রিংটি নিশ্চিত করতে চান")। মূলত, তার উত্তর এই হল:

function isNumeric(num){
  num = "" + num; //coerce num to be a string
  return !isNaN(num) && !isNaN(parseFloat(num));
}

এটি প্রত্যেক পরীক্ষার ক্ষেত্রে কাজ করে যা আমি এখানে নথিভুক্ত করেছি: https://jsfiddle.net/wggehvp9/5/

অন্যান্য সমাধানগুলি এই প্রান্তের ক্ষেত্রে ব্যর্থ হয়েছে: '', নাল, "", সত্য, এবং []। তত্ত্বের মধ্যে, আপনি যথাযথ ত্রুটি হ্যান্ডলিংয়ের সাথে তাদের ব্যবহার করতে পারেন, উদাহরণস্বরূপ:

return !isNaN(num);

অথবা

return (+num === +num);

বিশেষ পরিচালনার জন্য / \ s /, null, "", true, false, [] (এবং অন্যদের?)


উক্তি:

isNaN (num) // ফেরৎ সত্য যদি পরিবর্তনশীল একটি বৈধ সংখ্যা ধারণ করে না

যদি আপনি নেতৃস্থানীয় / পিছনের স্থানগুলির জন্য চেক করার প্রয়োজন হয় তবে সম্পূর্ণরূপে সত্য নয় - উদাহরণস্বরূপ, যখন নির্দিষ্ট সংখ্যক ডিজিটের প্রয়োজন হয়, এবং আপনাকে সম্ভবত একটি PIN এর জন্য '1111' এবং '111' বা '111' বলতে হবে। ইনপুট.

ব্যবহার করা ভাল:

var num = /^\d+$/.test(num)

এবং আপনি RegExp- পথ যেতে পারে:

var num = "987238";

if(num.match(/^-{0,1}\d+$/)){
  //valid integer (positive or negative)
}else if(num.match(/^\d+\.\d+$/)){
  //valid float
}else{
  //not valid number
}

যদি কেউ এটিকে অনেক দূরে ফেলে তবে আমি এই মুহুর্তে হ্যাকিংয়ের সময় অতিবাহিত করেছি moment.js ( https://github.com/moment/moment )। এখানে এমন কিছু যা আমি এখান থেকে সরিয়ে নিয়েছি:

function isNumeric(val) {
    var _val = +val;
    return (val !== val + 1) //infinity check
        && (_val === +val) //Cute coercion check
        && (typeof val !== 'object') //Array/object check
}

নিম্নলিখিত ক্ষেত্রে পরিচালনা করে:

সত্য! :

isNumeric("1"))
isNumeric(1e10))
isNumeric(1E10))
isNumeric(+"6e4"))
isNumeric("1.2222"))
isNumeric("-1.2222"))
isNumeric("-1.222200000000000000"))
isNumeric("1.222200000000000000"))
isNumeric(1))
isNumeric(0))
isNumeric(-0))
isNumeric(1010010293029))
isNumeric(1.100393830000))
isNumeric(Math.LN2))
isNumeric(Math.PI))
isNumeric(5e10))

মিথ্যা! :

isNumeric(NaN))
isNumeric(Infinity))
isNumeric(-Infinity))
isNumeric())
isNumeric(undefined))
isNumeric('[1,2,3]'))
isNumeric({a:1,b:2}))
isNumeric(null))
isNumeric([1]))
isNumeric(new Date()))

হাস্যকরভাবে, আমি সবচেয়ে বেশী সংগ্রাম করছি:

isNumeric(new Number(1)) => false

কোন পরামর্শ স্বাগত জানাই। :]


একটি "অন্তর্নির্মিত" সমাধান খুঁজে বের করার চেষ্টা করার জন্য মাথা ব্যাথা সংরক্ষণ করুন।

একটি ভাল উত্তর নেই, এবং এই থ্রেড মধ্যে অতিশয় আপত্তিকর উত্তর ভুল।

npm install is-number

জাভাস্ক্রিপ্টে, এটি সবসময় সহজতর নয় কারণ এটি একটি সংখ্যা একটি সংখ্যা কিনা নির্ভরযোগ্যভাবে যাচাই করা উচিত। একটি সংখ্যাতে একটি স্ট্রিং মান নিক্ষেপ করতে ডেভগুলি +, -, বা সংখ্যা () ব্যবহার করার জন্য এটি সাধারণ (উদাহরণস্বরূপ, যখন ব্যবহারকারীর ইনপুট, রেজেক্স মিল, প্যাসার্স, ইত্যাদি থেকে মানগুলি ফিরে আসে)। কিন্তু অপ্রত্যাশিত প্রান্তের ক্ষেত্রে অনেকগুলি অপ্রত্যাশিত ফলাফল পাওয়া যায়:

console.log(+[]); //=> 0
console.log(+''); //=> 0
console.log(+'   '); //=> 0
console.log(typeof NaN); //=> 'number'

আমি এই সরলতা পছন্দ।

Number.isNaN(Number(value))

উপরোক্ত নিয়মিত জাভাস্ক্রিপ্ট, তবে আমি স্মার্ট টাইপ পরীক্ষণের জন্য typeguard সাথে এটি ব্যবহার করছি। টাইপস্ক্রিপ্ট কম্পাইলারটি আপনাকে সঠিক ইন্টারেলিসেন্স দেওয়ার জন্য এবং কোনও ধরনের ত্রুটিগুলির জন্য এটি খুব উপযোগী।

প্রকারের টাইপগার্ড

isNotNumber(value: string | number): value is string {
    return Number.isNaN(Number(this.smartImageWidth));
}
isNumber(value: string | number): value is number {
    return Number.isNaN(Number(this.smartImageWidth)) === false;
}

ধরুন আপনার কাছে একটি সম্পত্তি width যা number | string number | string । আপনি একটি স্ট্রিং কিনা তা উপর ভিত্তি করে যুক্তি করতে চান।

var width: number|string;
width = "100vw";

if (isNotNumber(width)) 
{
    // the compiler knows that width here must be a string
    if (width.endsWith('vw')) 
    {
        // we have a 'width' such as 100vw
    } 
}
else 
{
    // the compiler is smart and knows width here must be number
    var doubleWidth = width * 2;    
}

টাইপ গার্ড শুধুমাত্র string হতে if বিবৃতির মধ্যে width প্রকারকে সীমাবদ্ধ করতে যথেষ্ট স্মার্ট। এটি কম্পাইলারকে width.endsWith(...) সাথে অনুমতি দেয় width.endsWith(...) যা টাইপটি string | number অনুমতি দেয় না string | number

আপনি যা চান তা টাইপগার্ডকে কল করতে পারেন isNotNumber , isNumber , isString , isNotString কিন্তু আমি মনে করি isString দ্বিধান্বিত এবং পড়ার জন্য কঠিন।


sNum একটি বৈধ সাংখ্যিক মান কিনা তা পরীক্ষা করার জন্য এখানে একটি এক-লিনিয়ার রয়েছে; এটি বিভিন্ন ধরনের ইনপুট জন্য পরীক্ষিত হয়েছে:

!isNaN(+s.replace(/\s|\$/g, ''));  // returns True if numeric value

আচ্ছা, আমি এই তৈরি করছি আমি তৈরি করেছি ...

এটা এখন পর্যন্ত কাজ করা হয়েছে:

function checkNumber(value) {
    if ( value % 1 == 0 )
    return true;
    else
    return false;
}

যদি আপনি এটির সাথে কোন সমস্যা স্পট করেন তবে দয়া করে আমাকে বলুন।


PFB কাজ সমাধান:

 function(check){ 
    check = check + "";
    var isNumber =   check.trim().length>0? !isNaN(check):false;
    return isNumber;
    }

Isan ফাংশন চেষ্টা করুন:

IsNaN () ফাংশন একটি মান একটি অবৈধ নম্বর (নন-এ-সংখ্যা) কিনা তা নির্ধারণ করে।

মান NaN সমান হলে এই ফাংশন সত্য ফেরত। অন্যথা এটা মিথ্যা ফেরত।

এই ফাংশন সংখ্যা নির্দিষ্ট Number.isNaN() পদ্ধতি থেকে ভিন্ন।

বিশ্বব্যাপী isNaN () ফাংশন, পরীক্ষিত মানটিকে একটি সংখ্যাতে রূপান্তরিত করে, তারপরে এটি পরীক্ষা করে।

Number.isNan () মানগুলিকে একটি সংখ্যাতে রূপান্তর করে না এবং যে কোনও মানের জন্য সত্যকে ফেরত দেবে না যা সংখ্যা সংখ্যা নয় ...


কেন jQuery এর বাস্তবায়ন যথেষ্ট ভাল না?

function isNumeric(a) {
    var b = a && a.toString();
    return !$.isArray(a) && b - parseFloat(b) + 1 >= 0;
};

মাইকেল এইরকম কিছু প্রস্তাব করেছেন (যদিও আমি "ব্যবহারকারী1691651 - জন" এর পরিবর্তিত সংস্করণ এখানে চুরি করেছি):

function isNumeric(num){
    num = "" + num; //coerce num to be a string
    return !isNaN(num) && !isNaN(parseFloat(num));
}

নিম্নলিখিত সবচেয়ে খারাপ কর্মক্ষমতা সঙ্গে একটি সমাধান, কিন্তু কঠিন ফলাফল। এটি jQuery 1.12.4 বাস্তবায়ন এবং মাইকেল এর উত্তরের একটি অগ্রগতি যা নেতৃস্থানীয় / পিছিয়ে যাওয়া স্থানগুলির জন্য অতিরিক্ত চেক সহ (কারণ মাইকেল এর সংস্করণ নেতৃস্থানীয় / পিছিয়ে যাওয়া স্থানগুলির সংখ্যার সংখ্যার জন্য সত্য করে):

function isNumeric(a) {
    var str = a + "";
    var b = a && a.toString();
    return !$.isArray(a) && b - parseFloat(b) + 1 >= 0 &&
           !/^\s+|\s+$/g.test(str) &&
           !isNaN(str) && !isNaN(parseFloat(str));
};

পরের সংস্করণে দুটি নতুন ভেরিয়েবল আছে, যদিও। এক এক করে, চারপাশে পেতে পারে:

function isNumeric(a) {
    if ($.isArray(a)) return false;
    var b = a && a.toString();
    a = a + "";
    return b - parseFloat(b) + 1 >= 0 &&
            !/^\s+|\s+$/g.test(a) &&
            !isNaN(a) && !isNaN(parseFloat(a));
};

আমি এইগুলি খুব বেশি পরীক্ষা করে নিই না, অন্য কয়েকটি উপায়ে আমি কয়েকটি ব্যবহার-কেস পরীক্ষা করে দেখি, যা আমার বর্তমান পরিস্থিতির সাথে আঘাত করবে, যা সব খুব সাধারণ স্টাফ। এটি একটি "স্থায়ী-উপর-কাঁধের-দৈত্য" পরিস্থিতি।


parseInt (), তবে সচেতন থাকবেন যে এই ফাংশনটি কিছুটা আলাদা, উদাহরণস্বরূপ এটি parseInt ("100px") এর জন্য 100 প্রদান করে।


একটি পরিবর্তনশীল (একটি স্ট্রিং সহ) একটি সংখ্যা কিনা তা পরীক্ষা করতে, এটি একটি সংখ্যা না কিনা তা পরীক্ষা করুন:

এই ভেরিয়েবল ধারণকারী একটি স্ট্রিং বা সংখ্যা কিনা নির্বিশেষে কাজ করে।

isNaN(num)         // returns true if the variable does NOT contain a valid number

উদাহরণ

isNaN(123)         // false
isNaN('123')       // false
isNaN('1e10000')   // false (This translates to Infinity, which is a number)
isNaN('foo')       // true
isNaN('10px')      // true

অবশ্যই, আপনি প্রয়োজন হলে আপনি এই অস্বীকার করতে পারেন। উদাহরণস্বরূপ, আপনি দেওয়া IsNumeric উদাহরণ বাস্তবায়ন করতে:

function isNumeric(num){
  return !isNaN(num)
}

একটি সংখ্যার মধ্যে একটি সংখ্যা ধারণকারী একটি স্ট্রিং রূপান্তর:

শুধুমাত্র স্ট্রিং শুধুমাত্র সংখ্যাসূচক অক্ষর থাকে, শুধুমাত্র কাজ করে, অন্যথায় এটি NaN ফেরত।

+num               // returns the numeric value of the string, or NaN 
                   // if the string isn't purely numeric characters

উদাহরণ

+'12'              // 12
+'12.'             // 12
+'12..'            // Nan
+'.12'             // 0.12
+'..12'            // Nan
+'foo'             // NaN
+'12px'            // NaN

একটি সংখ্যা স্বল্পভাবে একটি স্ট্রিং রূপান্তর

'12px' থেকে 12 তে রূপান্তর করার জন্য দরকারী, উদাহরণস্বরূপ:

parseInt(num)      // extracts a numeric value from the 
                   // start of the string, or NaN.

উদাহরণ

parseInt('12')     // 12
parseInt('aaa')    // NaN
parseInt('12px')   // 12
parseInt('foo2')   // NaN      These last two may be different
parseInt('12a5')   // 12       from what you expected to see. 

ভাসে

মনে রাখবেন যে +num , parseInt (যেমন নামটি সুপারিশ করে) অসদৃশ একটি ফ্ল্যাটকে দশমিক বিন্দু অনুসরণ করে সবকিছু বন্ধ করে রূপান্তর করবে (যদি আপনি এই আচরণের কারণে parseInt() ব্যবহার করতে চান তবে সম্ভবত আপনি ভাল পরিবর্তে অন্য পদ্ধতি ব্যবহার করে বন্ধ ):

+'12.345'          // 12.345
parseInt(12.345)   // 12
parseInt('12.345') // 12

খালি স্ট্রিং

খালি স্ট্রিং একটু পাল্টা-স্বজ্ঞাত হতে পারে। +num খালি স্ট্রিংগুলিকে শূন্যে রূপান্তর করে, এবং isNaN() কে একই অনুমান করে:

+''                // 0
isNaN('')          // false

কিন্তু parseInt() একমত না:

parseInt('')       // NaN

সম্ভবত এই প্রশ্ন জুড়ে এক বা দুইজন লোক আসছে যাদের স্বাভাবিকের তুলনায় অনেক কঠোর চেক দরকার (যেমন আমি করেছি)। এই ক্ষেত্রে, এটি দরকারী হতে পারে:

if(str === String(Number(str))) {
  // it's a "perfectly formatted" number
}

সতর্ক থাকুন! এটি .1 , 40.000 , 080 , 00.1 মত স্ট্রিংগুলিকে প্রত্যাখ্যান করবে। এটি খুব পছন্দের - এই পরীক্ষাটি পাস করার জন্য স্ট্রিংটি " অন্তততম নিখুঁত নিখুঁত ফর্ম " সাথে মেলে।

এটি String এবং Number কন্সট্রাকটর ব্যবহার করে স্ট্রিংটি একটি সংখ্যা এবং আবার ফিরে নিক্ষেপ করে এবং এইভাবে জাভাস্ক্রিপ্ট ইঞ্জিনের "নিখুঁত সংক্ষিপ্ত ফর্ম" (প্রাথমিক Number কন্সট্রাক্টর রূপে রূপান্তরিত হওয়ার সাথে সাথে) আসল স্ট্রিংয়ের সাথে মিল করে তা পরীক্ষা করে।


আপনি তার কন্সট্রাকটর একটি যুক্তি পাস যখন Number ফলাফল ব্যবহার করতে পারেন।

যদি যুক্তি (একটি স্ট্রিং) কোনও সংখ্যার রূপান্তর করা যায় না, এটি NaN প্রদান করে, যাতে আপনি প্রদত্ত স্ট্রিংটি বৈধ সংখ্যা কিনা তা নির্ধারণ করতে পারেন।

নোট: খালি স্ট্রিং বা '\t\t' এবং '\n\t' পাস করার সময় নোটটি 0 প্রদান করবে; সত্য পাস ফিরে 1 এবং মিথ্যা আয় 0।

    Number('34.00') // 34
    Number('-34') // -34
    Number('123e5') // 12300000
    Number('123e-5') // 0.00123
    Number('999999999999') // 999999999999
    Number('9999999999999999') // 10000000000000000 (integer accuracy up to 15 digit)
    Number('0xFF') // 255
    Number('Infinity') // Infinity  

    Number('34px') // NaN
    Number('xyz') // NaN
    Number('true') // NaN
    Number('false') // NaN

    // cavets
    Number('    ') // 0
    Number('\t\t') // 0
    Number('\n\t') // 0

আমি সম্প্রতি একটি পরিবর্তনশীল একটি বৈধ সংখ্যা নিশ্চিত করার উপায় সম্পর্কে একটি নিবন্ধ লিখেছি: https://github.com/jehugaleahsa/artifacts/blob/master/2018/typescript_num_hack.md নিবন্ধটি ফ্লোটিং পয়েন্ট বা পূর্ণসংখ্যা কীভাবে নিশ্চিত করতে হবে তা ব্যাখ্যা করে। গুরুত্বপূর্ণ ( +x বনাম ~~x )।

নিবন্ধটি ভেরিয়েবলটিকে একটি string বা একটি number দিয়ে শুরু করতে এবং trim উপলব্ধ / polyfilled অনুমান করে। এটি অন্যান্য ধরনের, হ্যান্ডেল এটি প্রসারিত করা কঠিন হবে না। এখানে এর মাংস আছে:

// Check for a valid float
if (x == null
    || ("" + x).trim() === ""
    || isNaN(+x)) {
    return false;  // not a float
}

// Check for a valid integer
if (x == null
    || ("" + x).trim() === ""
    || ~~x !== +x) {
    return false;  // not an integer
}

যদি আপনি সত্যিই নিশ্চিত করতে চান যে একটি স্ট্রিংটিতে শুধুমাত্র একটি সংখ্যা রয়েছে, কোন সংখ্যা (পূর্ণসংখ্যা বা ভাসমান বিন্দু), এবং ঠিক একটি নম্বর, আপনি parseFloat() / parseFloat() , Number() , অথবা !isNaN() parseFloat() ব্যবহার করতে পারবেন না নিজেদের. মনে রাখবেন যে !isNaN() প্রকৃতপক্ষে true ফিরে আসছে যখন Number() একটি সংখ্যা ফেরত দেবে এবং false যখন এটি NaN ফেরত NaN , তাই আমি বাকি আলোচনা থেকে বাদ দেব।

parseFloat() সাথে সমস্যাটি যদি স্ট্রিংটিতে কোন সংখ্যা থাকে তবে এটি একটি সংখ্যা প্রদান করবে, এমনকি যদি স্ট্রিংটিতে কেবলমাত্র এবং ঠিক কোনও সংখ্যা থাকে না:

parseFloat("2016-12-31")  // returns 2016
parseFloat("1-1") // return 1
parseFloat("1.2.3") // returns 1.2

Number() সহ সমস্যাটি হল যে এটি এমন একটি সংখ্যা প্রদান করবে যেখানে পাস মানটি সংখ্যা নয়!

Number("") // returns 0
Number(" ") // returns 0
Number(" \u00A0   \t\n\r") // returns 0

আপনার নিজস্ব regex ঘূর্ণায়মান সমস্যাটি হল যে আপনি যদি কোনও ফ্ল্যাটিং পয়েন্ট নম্বর মিলে যাওয়ার জন্য সঠিক রেজেক্স তৈরি না করেন তবে জাভাস্ক্রিপ্ট এটি স্বীকার করে যে আপনি ক্ষেত্রে মিস করবেন না বা যেখানে আপনি না হওয়া উচিত তা সনাক্ত করতে চলেছেন। এমনকি যদি আপনি আপনার নিজের regex রোল করতে পারেন, কেন? এটি করতে সহজভাবে অন্তর্নিহিত উপায় আছে।

যাইহোক, এটি দেখা যাচ্ছে যে Number() (এবং isNaN() ) parseFloat() যখন কোন নম্বরটি ফেরত parseFloat() না এবং তার বিপরীতে যেখানে প্রতি ক্ষেত্রে সঠিক জিনিসটি করে। তাই একটি স্ট্রিং সত্যিই সঠিক এবং শুধুমাত্র একটি সংখ্যা খুঁজে বের করতে, উভয় ফাংশন কল এবং তারা উভয় সত্য ফিরে কিনা দেখতে:

function isNumber(str) {
  if (typeof str != "string") return false // we only process strings!
  // could also coerce to string: str = ""+str
  return !isNaN(str) && !isNaN(parseFloat(str))
}




numeric