আপনার জন্য দুটি উত্তর:
মনে রাখবেন যে উভয় ক্ষেত্রেই, আমি ইতিবাচক নয় 0, যদিও "ইতিবাচক পূর্ণসংখ্যা" অন্তর্ভুক্ত করার জন্য ব্যাখ্যা করেছি 0। আপনি যদি অস্বীকার করতে চান তবে আমি নোটগুলি অন্তর্ভুক্ত করি 0।
পার্সিংয়ের উপর ভিত্তি করে
যদি আপনি এটি মানগুলির একটি যুক্তিসঙ্গত ব্যাপ্তির দশমিক পূর্ণসংখ্যার স্ট্রিং হতে চান তবে আপনি এটি করতে পারেন:
function isNormalInteger(str) {
var n = Math.floor(Number(str));
return n !== Infinity && String(n) === str && n >= 0;
}
অথবা আপনি যদি সাদা স্থান এবং নেতৃস্থানীয় শূন্যগুলিকে অনুমতি দিতে চান:
function isNormalInteger(str) {
str = str.trim();
if (!str) {
return false;
}
str = str.replace(/^0+/, "") || "0";
var n = Math.floor(Number(str));
return n !== Infinity && String(n) === str && n >= 0;
}
লাইভ টেস্টবেড (শীর্ষস্থানীয় শূন্যস্থান বা শ্বেতক্ষেত্র পরিচালনা না করে):
function isNormalInteger(str) {
var n = Math.floor(Number(str));
return n !== Infinity && String(n) === str && n >= 0;
}
function gid(id) {
return document.getElementById(id);
}
function test(str, expect) {
var result = isNormalInteger(str);
console.log(
str + ": " +
(result ? "Yes" : "No") +
(expect === undefined ? "" : !!expect === !!result ? " <= OK" : " <= ERROR ***")
);
}
gid("btn").addEventListener(
"click",
function() {
test(gid("text").value);
},
false
);
test("1", true);
test("1.23", false);
test("1234567890123", true);
test("1234567890123.1", false);
test("0123", false); // false because we don't handle leading 0s
test(" 123 ", false); // false because we don't handle whitespace
<label>
String:
<input id="text" type="text" value="">
<label>
<input id="btn" type="button" value="Check">
লাইভ টেস্টবেড ( শীর্ষস্থানীয় জিরো এবং হোয়াইটস্পেসের জন্য পরিচালনা সহ ):
function isNormalInteger(str) {
str = str.trim();
if (!str) {
return false;
}
str = str.replace(/^0+/, "") || "0";
var n = Math.floor(Number(str));
return String(n) === str && n >= 0;
}
function gid(id) {
return document.getElementById(id);
}
function test(str, expect) {
var result = isNormalInteger(str);
console.log(
str + ": " +
(result ? "Yes" : "No") +
(expect === undefined ? "" : !!expect === !!result ? " <= OK" : " <= ERROR ***")
);
}
gid("btn").addEventListener(
"click",
function() {
test(gid("text").value);
},
false
);
test("1", true);
test("1.23", false);
test("1234567890123", true);
test("1234567890123.1", false);
test("0123", true);
test(" 123 ", true);
<label>
String:
<input id="text" type="text" value="">
<label>
<input id="btn" type="button" value="Check">
আপনি যদি অস্বীকার করতে চান তবে 0কেবল এতে পরিবর্তন >= 0করুন > 0। (অথবা, সংস্করণ অনুমতি দেয় শূন্য নেতৃস্থানীয় যে, অপসারণ || "0"উপর replaceলাইন।)
কীভাবে এটি কাজ করে:
সাদা সংস্করণ এবং নেতৃস্থানীয় শূন্যগুলিকে অনুমতি দেওয়া সংস্করণে:
str = str.trim(); যে কোনও নেতৃস্থানীয় এবং পিছনের হোয়াইটপেস সরিয়ে দেয়।
if (!str) একটি ফাঁকা স্ট্রিং ধরে এবং ফিরে আসে, বাকি কাজগুলি করার কোনও অর্থ নেই।
str = str.replace(/^0+/, "") || "0"; স্ট্রিং থেকে সমস্ত নেতৃস্থানীয় 0 গুলি সরিয়ে দেয় - তবে যদি এটি ফাঁকা স্ট্রিংয়ের ফলাফল হয় তবে একটি একক 0 পুনরুদ্ধার করে।
Number(str): strএকটি সংখ্যায় রূপান্তর ; সংখ্যার ভাল একটি ভগ্নাংশ থাকতে পারে, বা হতে পারে NaN।
Math.floor: সংখ্যাটি কেটে ফেলুন (কোনও ভগ্নাংশের অংশ ছাড়ে)।
String(...): ফলাফলটিকে সাধারণ দশমিক স্ট্রিংয়ে ফিরিয়ে দেয়। সত্যিই বড় সংখ্যার জন্য, এটি বৈজ্ঞানিক স্বরলিপিতে যাবে, যা এই পদ্ধতির ক্ষতি করতে পারে। (বিভাজনটি কোথায় তা আমি পুরোপুরি জানি না, বিশদের বিবরণটি রয়েছে তবে পুরো সংখ্যার জন্য আমি বিশ্বাস করি এটি এমন এক পর্যায়ে আপনি 21 অঙ্ক ছাড়িয়ে গেছেন [এই সময়ের মধ্যে নম্বরটি অত্যন্ত অপ্রচলিত হয়ে উঠেছে, আইইইই-754 হিসাবে ডাবল-স্পষ্টতা সংখ্যায় কেবল স্পষ্টভাবে 15 অঙ্কের শুদ্ধি রয়েছে ..)
... === str: এটি মূল স্ট্রিংয়ের সাথে তুলনা করে।
n >= 0: এটি ইতিবাচক পরীক্ষা করুন।
নোট করুন যে এটি ইনপুটটির জন্য ব্যর্থ হয়েছে "+1", বৈজ্ঞানিক স্বরলিপিতে কোনও ইনপুট যা পর্যায়তে একই বৈজ্ঞানিক স্বরলিপিতে ফিরে আসে না String(...)এবং জাভাস্ক্রিপ্ট যে ধরণের সংখ্যা ব্যবহার করে (আইইইই-754 ডাবল-স্পষ্টতা বাইনারি ফ্লোটিং পয়েন্ট) প্রদত্ত মানটির চেয়ে আলাদা মানের কাছাকাছি যা সঠিকভাবে উপস্থাপন করতে পারে না (যার মধ্যে 9,007,199,254,740,992 এরও বেশি সংখ্যক পূর্ণসংখ্যা রয়েছে; উদাহরণস্বরূপ, 1234567890123456789ব্যর্থ হবে)। পূর্বেরটি একটি সহজ ফিক্স, দ্বিতীয়টি এত বেশি নয়।
নিয়মিত এক্সপ্রেশন
অন্য পদ্ধতিটি হ'ল স্ট্রিংয়ের অক্ষরগুলিকে একটি নিয়মিত অভিব্যক্তির মাধ্যমে পরীক্ষা করা, যদি আপনার লক্ষ্যটি কেবলমাত্র (বলুন) alচ্ছিকভাবে +অনুসরণ করা হয় যা উভয় দ্বারা অনুসরণ করা হয় 0বা সাধারণ দশমিক বিন্যাসে:
function isNormalInteger(str) {
return /^\+?(0|[1-9]\d*)$/.test(str);
}
লাইভ টেস্টবেড:
function isNormalInteger(str) {
return /^\+?(0|[1-9]\d*)$/.test(str);
}
function gid(id) {
return document.getElementById(id);
}
function test(str, expect) {
var result = isNormalInteger(str);
console.log(
str + ": " +
(result ? "Yes" : "No") +
(expect === undefined ? "" : !!expect === !!result ? " <= OK" : " <= ERROR ***")
);
}
gid("btn").addEventListener(
"click",
function() {
test(gid("text").value);
},
false
);
test("1", true);
test("1.23", false);
test("1234567890123", true);
test("1234567890123.1", false);
test("0123", false); // false because we don't handle leading 0s
test(" 123 ", false); // false because we don't handle whitespace
<label>
String:
<input id="text" type="text" value="">
<label>
<input id="btn" type="button" value="Check">
কীভাবে এটি কাজ করে:
^: স্ট্রিংয়ের সাথে ম্যাচ শুরু
\+?: একক, alচ্ছিককে মঞ্জুরি দিন +(যদি আপনি না চান তবে এটি সরান)
(?:...|...): এই দুটি বিকল্পের মধ্যে একটিকে (ক্যাপচার গ্রুপ তৈরি না করে) মঞ্জুরি দিন:
(0|...): 0নিজে থেকে অনুমতি দিন ...
(...|[1-9]\d*): ... বা 0দশমিক সংখ্যা বাদে অন্য কিছু দিয়ে শুরু হওয়া সংখ্যা number
$: স্ট্রিংয়ের সাথে ম্যাচ শেষ।
আপনি যদি তা অস্বীকার করতে চান 0(কারণ এটি ইতিবাচক নয়) তবে নিয়মিত প্রকাশটি ন্যায়বিচারে পরিণত হয় /^\+?[1-9]\d*$/(উদাহরণস্বরূপ, আমাদের যে বিকল্পটি অনুমোদিত হওয়ার দরকার ছিল তা হারাতে পারি 0)।
আপনি যদি শীর্ষস্থানীয় শূন্যগুলি (0123, 00524) অনুমতি দিতে চান তবে কেবলমাত্র বিকল্পটি এটির (?:0|[1-9]\d*)সাথে প্রতিস্থাপন করুন\d+
function isNormalInteger(str) {
return /^\+?\d+$/.test(str);
}
আপনি যদি হোয়াইটস্পেসের অনুমতি দিতে চান তবে \s*ঠিক পরে ^এবং \s*ঠিক আগে যুক্ত করুন $।
আপনি যখন এটি একটি সংখ্যায় রূপান্তর করেন তার জন্য দ্রষ্টব্য: আধুনিক ইঞ্জিনগুলিতে এটি ব্যবহার করা +strবা Number(str)করা সম্ভবত ভাল হবে তবে বয়স্ক ব্যক্তিরা অ-মানক (তবে পূর্বে অনুমোদিত) উপায়ে এগুলি প্রসারিত করতে পারে যা বলেছে একটি শীর্ষস্থানীয় শূন্য মানে অষ্টাল (বেস 8), উদাহরণস্বরূপ "010" => 8. একবার আপনি নম্বরটি যাচাই করেছেন, আপনি এটি নিরাপদ parseInt(str, 10)হিসাবে দশমিক (বেস 10) পার্স করা হয়েছে তা নিশ্চিত করতে নিরাপদে ব্যবহার করতে পারেন । parseIntস্ট্রিংয়ের শেষে আবর্জনা উপেক্ষা করবে, কিন্তু আমরা নিশ্চিত করেছি যে রেজেক্সের সাথে কোনও নেই।