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


1188

আমি আশা করছি পুরানো ভিবি 6 IsNumeric()ফাংশনের মতো একই ধারণামূলক জায়গাতে কিছু আছে ?


3
দেখুন এই সংশ্লিষ্ট প্রশ্ন , যা আমি কিছু সময় আগে জিজ্ঞাসা।
মাইকেল হরেন 19

38
আপনি যদি এই প্রশ্নটিতে যান, সমস্ত RegEx উত্তরগুলি এড়িয়ে যাওয়ার চেষ্টা করুন। এটি কেবল এটি করার উপায় নয়।
জোয়েল কোহর্ন 19

14
যতক্ষণ না কেউ ঠিক এটি করতে চায়: প্রদত্ত স্ট্রিংয়ে অঙ্কের একটি বৈধ স্ট্রিমের ফর্ম্যাট রয়েছে কিনা তা পরীক্ষা করতে। তাহলে কেন ভুল হবে?
সাসকিউ

16
নির্বাচিত উত্তরটি ভুল! তার মন্তব্য দেখুন, কিন্তু মূলত এটা যেমন সঙ্গে ব্যর্থ isNaN(""), isNaN(" "), isNaN(false), ইত্যাদিতে আয় falseএই জন্য, implying যে, তারা নম্বর আছে।
অ্যান্ড্রু

1
সুতরাং নির্বাচিত উত্তরটি ভুল, রেজিএক্সপ্যাক এটি না করার উপায় নয়। কোনটি তখন সঠিক?
আমাদের

উত্তর:


2320

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

পরিবর্তনশীল সামগ্রীটি স্ট্রিং বা সংখ্যা কিনা তা বিবেচনা ছাড়াই এটি কাজ করে।

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
+'   '             // 0
isNaN('')          // false
isNaN('   ')       // false

তবে parseInt()একমত নয়:

parseInt('')       // NaN
parseInt('   ')    // NaN

133
পার্সিয়ান্ট সম্পর্কিত একটি অত্যন্ত গুরুত্বপূর্ণ নোটটি এটি আপনাকে স্ট্রিংকে একটি ইনটে রূপান্তর করার জন্য একটি রেডিক্স নির্দিষ্ট করতে দেয়। এটি আপনার জন্য কোনও রডিক্স অনুমান করার চেষ্টা করে যদি এটি সরবরাহ না করে তবে এটি একটি বড় গোটচা। সুতরাং, উদাহরণস্বরূপ: parseInt ("17") এর ফলাফল 17 (দশমিক, 10), কিন্তু পার্সেন্ট ("08") এর ফলাফল 0 (অষ্টাল, 8)। সুতরাং, যদি আপনি অন্যথায় পরিকল্পনা না করেন তবে পার্সিয়ান্ট (সংখ্যা, 10) ব্যবহার করা সবচেয়ে নিরাপদ, স্পষ্টভাবে 10টিকে মূলতকে নির্দিষ্ট করে।
অ্যাডাম

36
নোট করুন! IsNaN (অপরিবর্তিত) মিথ্যা প্রত্যাবর্তন করে
ডেভিড হেলসিং

111
এটি কেবল সাধারণ ভুল - এটি এতগুলি উপার্জন কীভাবে পেল? আপনি isNaN"ভেরিয়েবলটি সংখ্যা নয় কিনা তা পরীক্ষা করতে" ব্যবহার করতে পারবেন না । "একটি সংখ্যা নয়" "আইইইই -794 নাএন" সমান নয়, যা এটি isNaNপরীক্ষা করে। বিশেষত, বুলেট এবং খালি স্ট্রিংগুলি পরীক্ষা করার সময় এই ব্যবহার ব্যর্থ হয়। বিকাশকারী.মোজিলা.অর্গ.ইন- ইউএস / ডকস / ওয়েব / জাভা স্ক্রিপ্ট / রেফারেন্স / See দেখুন ।
EML

46
কোনও কিছুর একটি সংখ্যা রয়েছে কিনা তা যাচাই করার দ্রুততম উপায় হ'ল "স্ব সম সমান" চেক: var n = 'a'; if (+n === +n) { // is number }এটি ক্রোমের সর্বশেষ সংস্করণে আইএনএনএন এর চেয়ে ~ 3994% দ্রুত। পারফরম্যান্স পরীক্ষাটি এখানে দেখুন: jsperf.com/isnan-vs-typeof/5
কেভিন জুরকোভস্কি

22
** সতর্কতা ** এই উত্তরটি ভুল। আপনার নিজের ঝুঁকিতে ব্যবহার করুন। উদাহরণ:isNaN(1 + false + parseInt("1.do you trust your users?"))
কিথপজল্লি

55

এবং আপনি 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
}

40
এই ক্ষেত্রে, RegExp == খারাপ
জোয়েল কোহোর্ন

10
এটি হেক্সাডেসিমাল সংখ্যায় (0x12, উদাহরণস্বরূপ) ব্যর্থ হয়, শীর্ষস্থানীয় শূন্য (.42, উদাহরণস্বরূপ) এবং নেতিবাচক সংখ্যা ছাড়াই ভাসমান।
ওরি

17
@ জোয়েলকোহুর্ন এখানে কেন রেজিএক্সপ == খারাপ বলার বিষয়ে যত্নশীল? আমার কাছে এটি একটি বৈধ ব্যবহারের কেস বলে মনে হচ্ছে।
গণনা

6
একটি সংখ্যা তৈরি করার মতো আরও অনেকগুলি উপায় রয়েছে (অন্য মন্তব্যে হেক্স সংখ্যা কেবল একটি উদাহরণ), এবং এমন অনেকগুলি সংখ্যা রয়েছে যা বৈধ হিসাবে বিবেচিত হবে না (প্রকারের উপরি প্রবাহ, খুব নির্ভুল ইত্যাদি)। এছাড়াও,
রিজেক্স

1
বৈজ্ঞানিক স্বরলিপি ... 1e10 ইত্যাদির সাথেও মিলে যাওয়া উচিত
জোসেফ

51

যদি আপনি কেবল স্ট্রিংটি পুরো সংখ্যা (দশমিক কোনও স্থান নয়) তা খতিয়ে দেখার চেষ্টা করছেন, রেজেক্স একটি ভাল উপায়। অন্যান্য পদ্ধতি যেমন 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

11
console.log (isNumeric ( '- 1'));
ইয়ংনান

5
console.log (isNumeric ( '2e2'));
গাল বারবিন

11
সম্ভবত স্রেফ "isNumeric" থেকে "hasOnlyD Digits" নামকরণ করুন। বেশিরভাগ ক্ষেত্রেই, আপনি যা খুঁজছেন তা হ'ল এটি।
gus3001

1
এই আমি যা খুঁজছিলাম, পিএইচপি সিটিপি_ডিজিটের সমতুল্য
মিগুয়েল

/^-?\d+$/ঠিক আছে?
সুকিমা

36

আপনি সত্যিই যে একটি স্ট্রিং শুধুমাত্র একটি নম্বর, কোন নম্বর (পূর্ণসংখ্যা বা ফ্লোটিং পয়েন্ট), এবং ঠিক সংখ্যা উপস্থিত রয়েছে নিশ্চিত করতে চান, আপনি করতে পারবেন না ব্যবহার parseInt()/ parseFloat(), Number()অথবা !isNaN()নিজেরাই। দ্রষ্টব্য যে !isNaN()আসলে ফিরে আসছে trueকখন Number()কোন সংখ্যা ফিরে আসবে এবং falseকখন এটি ফিরে আসবে 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

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

তবে দেখা যাচ্ছে যে Number()(এবং isNaN()) প্রতিটি ক্ষেত্রে সঠিক কাজ করে যেখানে 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))
}

2
স্ট্রিংয়ের শীর্ষস্থানীয় বা পেছনের স্থান থাকলে এটি সত্য হয়। ' 1', '2 'এবং ' 3 'সমস্ত সত্য ফিরে।
রুডি

রিটার্ন-স্টেটমেন্টে এর মতো কিছু যুক্ত করা সমাধান করবে যে: && / / ^ \ s + | \ s + $ / g.test (str)
আলট্রোম্যান দ্য টাকোম্যান

2
@ রুডলেন্ডার্স - স্ট্রিংকে বৈধ সংখ্যা হিসাবে ল্যাপড করা স্থানগুলি পিছনে পড়ে থাকলে বেশিরভাগ লোকের চিন্তা থাকবে না কারণ দুর্ঘটনাক্রমে প্রচুর ইন্টারফেসে অতিরিক্ত স্পেসে রেখে দেওয়া সহজ।
ইয়ান

3
সংখ্যাটি স্ট্রিং ব্যবহারকারীর ইনপুট থেকে আসার ক্ষেত্রে এটি সত্য। তবে আমি ভেবেছিলাম আমার যেভাবেই ফাঁকা স্থানগুলি উল্লেখ করা উচিত, কারণ আমি মনে করি যে বেশিরভাগ লোক যাদের isNumberফাংশন প্রয়োজন তারা ব্যবহারকারীর ইন্টারফেসের সাথে কাজ করে না। এছাড়াও, একটি ভাল সংখ্যার ইনপুট ফাঁকা স্থান শুরু করতে দেয় না।
রুডি 21

36

এই প্রশ্নের স্বীকৃত উত্তরের বেশ কয়েকটি ত্রুটি রয়েছে (যেমনটি অন্যান্য ব্যবহারকারী দু'জনেই প্রকাশ করেছেন) এটি জাভাস্ক্রিপ্টে যেতে যোগাযোগের সবচেয়ে সহজ এবং প্রমাণিত উপায়:

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

নীচে কয়েকটি ভাল পরীক্ষার মামলা রয়েছে:

console.log(isNumeric(12345678912345678912)); // true
console.log(isNumeric('2 '));                 // true
console.log(isNumeric('-32.2 '));             // true
console.log(isNumeric(-32.2));                // true
console.log(isNumeric(undefined));            // false

// the accepted answer fails at these tests:
console.log(isNumeric(''));                   // false
console.log(isNumeric(null));                 // false
console.log(isNumeric([]));                   // false

22

ব্যবহার করে দেখুন isNan ফাংশন :

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

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

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

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

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


2
আপনি খালি স্ট্রিংয়ের জন্য একটি চেক যোগ করেছেন তা নিশ্চিত করুন। isNaN ('') মিথ্যা ফিরিয়ে দেয় তবে আপনি সম্ভবত এই ক্ষেত্রে সত্যটি ফিরে আসতে চান।
মাইকেল হরেন

3
আইসফিনাইট একটি আরও ভাল চেক - এটি
অনন্তের জঘন্য

3
পছন্দ করেছেন '\ u00A0' এর মতো জিনিসগুলি সহ কেবল শ্বেতস্থান অক্ষরযুক্ত যে কোনও স্ট্রিংয়ের জন্য isNaN()ফেরত দেয় । false
মাইকেল

1
সতর্কতা: মানগুলির জন্য কাজ করে না: নাল, "" (খালি স্ট্রিং) এবং মিথ্যা।
জেনি ও'রেলি

আমি বুঝতে পারি যে এই উত্তরটি 11 বছর আগে দেওয়া হয়েছিল এবং গৃহীত উত্তরটির কয়েক মিনিট আগে দেওয়া হয়েছিল, তবে এটি পছন্দ বা না, গৃহীত উত্তরটির চারপাশে আরও কথোপকথন রয়েছে, সুতরাং এই উত্তরটি প্রশ্নের উত্তর দেওয়ার ক্ষেত্রে সত্যই কিছু যুক্ত করে না। আমি নতুন পাঠকদের বিভ্রান্ত করা এড়ানোর জন্য দয়া করে এটি মুছে ফেলার পরামর্শ দিচ্ছি। আমার মনে হয় আপনি যদি তা করেন তবে আপনি শৃঙ্খলাবদ্ধ ব্যাজটি পেয়ে যাবেন।
ড্যান ড্যাসক্লেস্কু

14

পুরানো প্রশ্ন, তবে প্রদত্ত উত্তরে বেশ কয়েকটি পয়েন্ট নিখোঁজ রয়েছে।

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

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

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

পর্যবেক্ষণ (নোড.জেএস ব্যবহার করে):

> 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তবে আপনার স্ট্রিং সর্বাধিক 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);
  }

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


1
"তবে বেশিরভাগ ক্ষেত্রে যখন লোকেরা সংখ্যা জিজ্ঞাসা করে তারা 1e + 30 এর মতো জিনিসের সাথে মিল রাখতে চায় না" আপনি কেন এটি বলবেন? যদি কেউ জানতে চান যে স্ট্রিংয়ে একটি সংখ্যা রয়েছে কিনা, আমার কাছে মনে হয় তারা এটি জানতে চান যে এটিতে একটি সংখ্যা রয়েছে এবং 1e + 30 একটি সংখ্যা। অবশ্যই আমি জাভাস্ক্রিপ্টে একটি সংখ্যার মানের জন্য যদি একটি স্ট্রিং পরীক্ষা করছিলাম তবে আমি এটির সাথে মিল রাখতে চাই।
ড্যান জোনস

9

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

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 /, নাল, "", সত্য, মিথ্যা, [] (এবং অন্যদের?) এর জন্য বিশেষ পরিচালনা সহ


1
এটি এখনও পিছনের / শীর্ষস্থানীয় জায়গাগুলির সাথে সত্য ফিরে আসে। রিটার্ন-স্টেটমেন্টে এর মতো কিছু যুক্ত করা সমাধান করবে যে: && / / ^ \ s + | \ s + $ / g.test (str)
আলট্রোম্যান দ্য টাকোম্যান

2
সুতরাং '123' মিথ্যা হওয়া উচিত, একটি সংখ্যা নয়, যখন '1234' একটি সংখ্যা হওয়া উচিত? এটি কেমন তা আমি পছন্দ করি, যাতে "123" একটি সংখ্যা, তবে এটি যদি বিকাশকারীদের বিবেচনার উপর নির্ভর করে তবে নেতৃত্বাধীন বা অনুসরণকারী জায়গাগুলির মান পরিবর্তন করা উচিত।
জনপি 2

8

এর নির্মাণকারীর কাছে কোনও যুক্তি পাস করার সময় আপনি সংখ্যার ফলাফলটি ব্যবহার করতে পারেন ।

যদি আর্গুমেন্ট (একটি স্ট্রিং) একটি সংখ্যায় রূপান্তর করা যায় না, এটি NaN প্রদান করে, তাই আপনি নির্ধারণ করতে পারবেন যে স্ট্রিংটি একটি বৈধ সংখ্যা ছিল কিনা or

দ্রষ্টব্য: নোট যখন খালি স্ট্রিং বা ক্ষণস্থায়ী '\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

Numberকন্সট্রাকটর ঠিক হিসাবে একই +x
গ্রেগরোস 21

একটি সাইড নোট হিসাবে, যে ES6 মনে রাখা Number()হ্যান্ডলগুলি পাশাপাশি সংখ্যার ভাসা, মত Number.parseFloat()নাNumber.parseInt()
zurfyx

7

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

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

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

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


2
ধন্যবাদ @ জো রোক। আমি এই খুব প্রয়োজন ছিল, কিন্তু মাত্র পূর্ণসংখ্যার জন্য, তাই আমি আরো বলেন: (str === String(Math.round(Number(str))))
কিথপজল্লি

সচেতন হতে হবে যে "Infinity", "-Infinity"এবং "NaN"এই পরীক্ষাটি পাস। তবে এটি একটি অতিরিক্ত Number.isFiniteপরীক্ষা ব্যবহার করে স্থির করা যেতে পারে ।
গ্রেগরোস 21

এটি ঠিক একই রকম str === ("" + +str)। এটি মূলত যাচাই করে যে স্ট্রিংটি কোনও জেএস নম্বরকে স্ট্রিংফাই করার ফলাফল কিনা। এটি জানার পরে আমরা একটি সমস্যাও দেখতে পাচ্ছি: পরীক্ষার জন্য পাস হয় 0.000001তবে ব্যর্থ হয় 0.0000001যা 1e-7পরিবর্তে পাস করলে হয়। খুব বড় সংখ্যার জন্য একই।
গ্রেগরোস

5

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


এবং 11 জন্য parseInt(09)
djechlin

10
কারণ আপনার প্রয়োজনparaseInt(09, 10)
গ্যাভিন

1
ECMAScript 5 হিসাবে , যার প্রশস্ত ব্রাউজার সমর্থন (আইই -9) রয়েছে, আপনার আর , 10যুক্তির দরকার নেই । parseInt('09')এখন 9 এর সমান
ররি ও'কেনে

4

উদ্ধৃতি:

isNaN (num) // সত্যটি ফেরত দেয় যদি ভেরিয়েবলটিতে একটি বৈধ সংখ্যা না থাকে

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

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

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

মান '-1', '0.1'এবং '1e10'সব রিটার্ন মিথ্যা। তদুপরি, ধনাত্মক অনন্তের চেয়ে বড় বা নেতিবাচক অনন্তের চেয়ে ছোট মানগুলি সত্য হয়ে যায়, যদিও তাদের সম্ভবত মিথ্যা প্রত্যাবর্তন করা উচিত।
রুডি

4

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));
};

আমি এর খুব একটাও পরীক্ষা করিনি, আমি কয়েকটি ব্যবহারের ক্ষেত্রে নিজেই পরীক্ষা করার পরিবর্তে আমার বর্তমান পরিস্থিতি নিয়ে যাচ্ছি যা হ'ল সব স্ট্যান্ডার্ড স্টাফ। এটি একটি "দৈত্যের কাঁধে দাঁড়ানো" পরিস্থিতি।


4

এটি টাইপস্ক্রিপ্টের জন্য বৈধ নয়:

declare function isNaN(number: number): boolean;

টাইপস্ক্রিপ্টের জন্য আপনি ব্যবহার করতে পারেন:

/^\d+$/.test(key)


3

ঠিক আছে, আমি নিজের তৈরি এটি ব্যবহার করছি ...

এটি এতক্ষণ কাজ করে চলেছে:

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

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


12
এটি খালি স্ট্রিং, খালি অ্যারে, ভুয়া এবং নালীর জন্য ভুল ফলাফল দেয়।
ওরি

2
এটি একটি ট্রিপল সমান হওয়া উচিত নয়?
toasted_flakes

1
আমার অ্যাপ্লিকেশনটিতে আমরা কেবল এজেড এবং 0-9 টি অক্ষরকে অনুমতি দিচ্ছি। আমি উপরের কাজটি দেখতে পেলাম যদি না স্ট্রিং 0xnn দিয়ে শুরু হয় এবং তারপরে এটি সংখ্যাসূচক হিসাবে ফিরে আসে যখন এটি না থাকা উচিত I আমি নীচে একটি মন্তব্যে পোস্ট করেছি যাতে ফর্ম্যাট অক্ষত থাকে।
rwheadon

6
আপনি কেবল 'রিটার্ন মান% 1 === 0' করতে পারবেন
ব্রায়ান শেরমারহর্ন

কেবল করুনreturn !isNaN(parseInt(value, 10));
ডার্কনিউরন

3

যদি কেউ কখনও এটিকে কমিয়ে দেয় তবে আমি এই মুহুর্তে প্যাচ দেওয়ার চেষ্টা করে কিছু সময় ব্যয় করেছি htt ( 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

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


2
কি isNumeric(' ')এবং isNumeric('')?
অ্যালেক্স কোরি

আমি && (val.replace(/\s/g,'') !== '') //Empty && (val.slice(-1) !== '.') //Decimal without Numberউপরে উল্লিখিত ইস্যুটি সমাধান করার জন্য যুক্ত করব এবং একটি আমার নিজের ছিল।
খোলামেলা


3
function isNumberCandidate(s) {
  const str = (''+ s).trim();
  if (str.length === 0) return false;
  return !isNaN(+str);
}

console.log(isNumberCandidate('1'));       // true
console.log(isNumberCandidate('a'));       // false
console.log(isNumberCandidate('000'));     // true
console.log(isNumberCandidate('1a'));      // false 
console.log(isNumberCandidate('1e'));      // false
console.log(isNumberCandidate('1e-1'));    // true
console.log(isNumberCandidate('123.3'));   // true
console.log(isNumberCandidate(''));        // false
console.log(isNumberCandidate(' '));       // false
console.log(isNumberCandidate(1));         // true
console.log(isNumberCandidate(0));         // true
console.log(isNumberCandidate(NaN));       // false
console.log(isNumberCandidate(undefined)); // false
console.log(isNumberCandidate(null));      // false
console.log(isNumberCandidate(-1));        // true
console.log(isNumberCandidate('-1'));      // true
console.log(isNumberCandidate('-1.2'));    // true
console.log(isNumberCandidate(0.0000001)); // true
console.log(isNumberCandidate('0.0000001')); // true
console.log(isNumberCandidate(Infinity));    // true
console.log(isNumberCandidate(-Infinity));    // true

console.log(isNumberCandidate('Infinity'));  // true

if (isNumberCandidate(s)) {
  // use +s as a number
  +s ...
}

ধন্যবাদ, দুর্দান্ত উত্তর!
এমআলসউদ

3

2019: ES3, ES6 এবং টাইপস্ক্রিপ্ট উদাহরণ সহ

সম্ভবত এটি অনেক বার পুনর্বার করা হয়েছে, তবে আমি আজও এইটির সাথে লড়াই করেছি এবং আমার উত্তর পোস্ট করতে চেয়েছিলাম, কারণ আমি অন্য কোনও উত্তর দেখিনি যা এটিকে সহজ বা পুঙ্খানুপুঙ্খভাবে করে:

ES3

var isNumeric = function(num){
    return (typeof(num) === 'number' || typeof(num) === "string" && num.trim() !== '') && !isNaN(num);  
}

ES6

const isNumeric = (num) => (typeof(num) === 'number' || typeof(num) === "string" && num.trim() !== '') && !isNaN(num);

টাইপরাইটারে মুদ্রি

const isNumeric = (num: any) => (typeof(num) === 'number' || typeof(num) === "string" && num.trim() !== '') && !isNaN(num as number);

এটি বেশ সহজ বলে মনে হচ্ছে এবং আমি অন্যান্য অনেক পোস্টে দেখেছি এমন সমস্ত ঘাঁটিগুলি কভার করে এবং নিজেকে ভেবে দেখেছি:

// Positive Cases
console.log(0, isNumeric(0) === true);
console.log(1, isNumeric(1) === true);
console.log(1234567890, isNumeric(1234567890) === true);
console.log('1234567890', isNumeric('1234567890') === true);
console.log('0', isNumeric('0') === true);
console.log('1', isNumeric('1') === true);
console.log('1.1', isNumeric('1.1') === true);
console.log('-1', isNumeric('-1') === true);
console.log('-1.2354', isNumeric('-1.2354') === true);
console.log('-1234567890', isNumeric('-1234567890') === true);
console.log(-1, isNumeric(-1) === true);
console.log(-32.1, isNumeric(-32.1) === true);
console.log('0x1', isNumeric('0x1') === true);  // Valid number in hex
// Negative Cases
console.log(true, isNumeric(true) === false);
console.log(false, isNumeric(false) === false);
console.log('1..1', isNumeric('1..1') === false);
console.log('1,1', isNumeric('1,1') === false);
console.log('-32.1.12', isNumeric('-32.1.12') === false);
console.log('[blank]', isNumeric('') === false);
console.log('[spaces]', isNumeric('   ') === false);
console.log('null', isNumeric(null) === false);
console.log('undefined', isNumeric(undefined) === false);
console.log([], isNumeric([]) === false);
console.log('NaN', isNumeric(NaN) === false);

আপনি নিজের isNumericফাংশনটিও চেষ্টা করতে পারেন এবং এই ব্যবহারের ক্ষেত্রে কেবল অতীত হয়ে যেতে পারেন এবং তাদের সবার জন্য "সত্য" জন্য স্ক্যান করতে পারেন।

অথবা, প্রতিটি যে মানগুলি দেখায় তা দেখতে:

<code> হল সংখ্যাসূচক () </code> এর বিরুদ্ধে প্রতিটি পরীক্ষার ফলাফল


3

2019: প্রাকটিক্যাল এবং টাইট সংখ্যার বৈধতা চেক

প্রায়শই, 'বৈধ সংখ্যা' এর অর্থ জাভাস্ক্রিপ্ট নম্বর এনএএন এবং ইনফিনিটি বাদে, অর্থাত্ একটি 'সীমাবদ্ধ নম্বর'।

কোনও মানের সংখ্যার বৈধতা পরীক্ষা করতে (উদাহরণস্বরূপ বাহ্যিক উত্স থেকে), আপনি ESlint Airbnb স্টাইলে সংজ্ঞা দিতে পারেন:

/**
 * Returns true if 'candidate' is a finite number or a string referring (not just 'including') a finite number
 * To keep in mind:
 *   Number(true) = 1
 *   Number('') = 0
 *   Number("   10  ") = 10
 *   !isNaN(true) = true
 *   parseFloat('10 a') = 10
 *
 * @param {?} candidate
 * @return {boolean}
 */
function isReferringFiniteNumber(candidate) {
  if (typeof (candidate) === 'number') return Number.isFinite(candidate);
  if (typeof (candidate) === 'string') {
    return (candidate.trim() !== '') && Number.isFinite(Number(candidate));
  }
  return false;
}

এবং এটি এইভাবে ব্যবহার করুন:

if (isReferringFiniteNumber(theirValue)) {
  myCheckedValue = Number(theirValue);
} else {
  console.warn('The provided value doesn\'t refer to a finite number');
}

2

পিএফবি কার্যনির্বাহী সমাধান:

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

2

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

একটি ভাল উত্তর নেই, এবং এই থ্রেডে প্রচুর upvated উত্তর ভুল।

npm install is-number

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

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

1

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

নিবন্ধটি ধরে নিয়েছে যে চলকটি এক stringবা একটি numberএবং trimএটি / পলফিল পাওয়া যায়। অন্যান্য ধরণের হ্যান্ডেল করার জন্য এটি প্রসারিত করা শক্ত হবে না। এখানে এর মাংস:

// 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
}

1

আমার প্রয়াসটি কিছুটা বিভ্রান্তিকর, ফের্পাপাস সেরা সমাধান নয়

function isInt(a){
    return a === ""+~~a
}


console.log(isInt('abcd'));         // false
console.log(isInt('123a'));         // false
console.log(isInt('1'));            // true
console.log(isInt('0'));            // true
console.log(isInt('-0'));           // false
console.log(isInt('01'));           // false
console.log(isInt('10'));           // true
console.log(isInt('-1234567890'));  // true
console.log(isInt(1234));           // false
console.log(isInt('123.4'));        // false
console.log(isInt(''));             // false

// other types then string returns false
console.log(isInt(5));              // false
console.log(isInt(undefined));      // false
console.log(isInt(null));           // false
console.log(isInt('0x1'));          // false
console.log(isInt(Infinity));       // false

এটি খুব খারাপ নয়, দুটি খারাপ এটি কোনও দশমিক ননেশন হিসাবে কাজ করে না, যেমন (1) বৈজ্ঞানিক স্বরলিপি এবং (2) নন-বেস -10 স্বরলিপি, যেমন অক্টাল ( 042) এবং হেক্সাডেসিমাল ( 0x45f)
ডোমি

এটি একটি সংখ্যাসমূহের সন্ধানের প্রশ্নের উত্তর দেয় না, এটি কেবল কোনও ইনট অনুসন্ধান করে।
জেরেমি

0

আমার অ্যাপ্লিকেশনটিতে আমরা কেবল এজেড এবং 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)] এ দীর্ঘকালীন বাগটি ব্যবহার করছে, তবে আমি এটির জন্য কথা বলতে পারি না, তবে আমাদের প্রয়োজনটি ঠিক এটি।


কেন এটি জাভাস্ক্রিপ্টে একটি বাগ হবে?
বার্গি

পার্ল বা সি তে একই সমাধানের সাথে আমি একই আচরণটি দেখতে পাচ্ছি না এবং যেহেতু আমি জাভাস্ক্রিপ্ট বা ক্রিয়া স্ক্রিপ্টের জন্য প্রোগ্রামিং ভাষার বিকাশকারী নই আমি জানি না যে আচরণটি আমি অভিজ্ঞতার সাথে গ্রহণ করছি তা সত্যই ইচ্ছাকৃত হয় কি না।
rwheadon

ঠিক আছে, জাভাস্ক্রিপ্টটি অন্তর্নিহিত ধরণের কাস্টিং সম্পর্কে কিছুটা slালু, তবে একবার আপনি জানেন যে এটি কীভাবে কাজ করে তা আপনি সহজেই বুঝতে পারবেন। আপনি সংখ্যায় স্ট্রিং নিক্ষেপ করছেন ( % 1তাদের উপর সংখ্যাসূচক অপারেশনটি আহ্বান করে), এবং এটি স্ট্রিংটিকে হেক্স বা ভাসমান আক্ষরিক হিসাবে ব্যাখ্যা করবে।
বার্গি

0

আমার সমাধান:

// returns true for positive ints; 
// no scientific notation, hexadecimals or floating point dots

var isPositiveInt = function(str) { 
   var result = true, chr;
   for (var i = 0, n = str.length; i < n; i++) {
       chr = str.charAt(i);
       if ((chr < "0" || chr > "9") && chr != ",") { //not digit or thousands separator
         result = false;
         break;
       };
       if (i == 0 && (chr == "0" || chr == ",")) {  //should not start with 0 or ,
         result = false;
         break;
       };
   };
   return result;
 };

আপনার বিশেষ প্রয়োজন অনুসারে আপনি লুপের ভিতরে অতিরিক্ত শর্ত যুক্ত করতে পারেন।


0

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

// @flow

function acceptsNumber(value: number) {
  // ...
}

acceptsNumber(42);       // Works!
acceptsNumber(3.14);     // Works!
acceptsNumber(NaN);      // Works!
acceptsNumber(Infinity); // Works!
acceptsNumber("foo");    // Error!

0

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

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

0

কেবল ব্যবহার করুন isNaN(), এটি স্ট্রিংটিকে একটি সংখ্যায় রূপান্তরিত করবে এবং যদি একটি বৈধ সংখ্যা পায় তবে ফিরে আসবে false...

isNaN("Alireza"); //return true
isNaN("123"); //return false

0

আমি নিম্নলিখিত ব্যবহার করছি:

const isNumber = s => !isNaN(+s)

অপেক্ষাকৃত ভাল কাজ করে অনেক ক্ষেত্রে, কিন্তু মত ক্ষেত্রে ব্যর্থ 1..1, 1,1, -32.1.12, এবং আরো গুরুত্বপূর্ণ ব্যর্থ undefinedএবং NaN। যদি আপনি পাস হয়ে যান undefinedবা NaNএটি যে এটি আপনাকে একটি মিথ্যা ধনাত্মক বলে ফিরিয়ে দেবে এটি একটি সংখ্যা।
জেরেমি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.