একটি স্ট্রিংটি ইতিবাচক পূর্ণসংখ্যার যাচাই করুন


200

আমি জাভাস্ক্রিপ্টের একটি স্ট্রিংটি ধনাত্মক পূর্ণসংখ্যার কিনা তা পরীক্ষা করে দেখতে সবচেয়ে সহজ ব্যর্থ-নিরাপদ পরীক্ষা চাই।

isNaN(str)সমস্ত ধরণের অ-পূর্ণসংখ্যার মানগুলির জন্য সত্য parseInt(str)প্রত্যাবর্তন করে এবং "2.5" এর মতো ভাসমান স্ট্রিংয়ের জন্য পূর্ণসংখ্যা ফেরত চলেছে। এবং আমি কিছু jQuery প্লাগইন ব্যবহার করতে চাই না।


7
আপনি কি "+2" কে অনুমতি দিচ্ছেন? কিভাবে "0.1e1"? কিভাবে "1.0000"?
ফ্রোগজ

isNaN()ফাংশন উপায় এটা আছে কারণ ধারণা আচরণ করবে Not a Numberআইইইই 794 ফ্লোটিং পয়েন্ট নির্দেশের মধ্যে একটি খুব নির্দিষ্ট অর্থ রয়েছে। "এই মানটি কি একটি সংখ্যা নয়?" সরল কথোপকথনের প্রশ্নের উত্তর সরবরাহ করার ইচ্ছা নেই?
পয়েন্টি

3
প্রশ্নটি চূড়ান্ত সম্পর্কে অস্পষ্ট। আপনি "স্ট্রিং একটি পূর্ণসংখ্যা" যাচাই করতে পারবেন না, কারণ এমন কোনও জিনিস নেই - একই সাথে কোনও বস্তু স্ট্রিং এবং সংখ্যা হতে পারে না। আপনি সম্ভবত বোঝাতে চেয়েছিলেন "স্ট্রিংটি কোনও পূর্ণসংখ্যার বৈধ উপস্থাপনা হলে কীভাবে পরীক্ষা করবেন", তবে এর উত্তর দিতে আমাদের কোন ভাষা বা "সংস্কৃতি" সম্পর্কে কথা বলছেন তা জানতে হবে to উদাহরণস্বরূপ, ٢‎٣٤বা MCMXIXউভয়ই বৈধ পূর্ণসংখ্যার উপস্থাপনা, তবে আমার মনে হয় না আপনি এমন কোনও কোড খুঁজছেন যা এগুলিকে পার্স করতে সক্ষম হবে। লোকেরা যে সম্পর্কে বিভ্রান্ত বলে মনে হচ্ছে আপনি কোন সংখ্যক ফর্ম্যাটকে সমর্থন করতে পারবেন তা নির্দিষ্ট করে দিতে পারেন।
জর্জি

5
আমি মনে করি 'চূড়ান্ত সম্পর্কে অস্পষ্ট' নিজেকে কিছুটা চরম; তবে যাইহোক ... প্রসঙ্গটি হ'ল শপিং কার্টে একটি ইংলিশ স্পিকারযুক্ত দেশে ব্যবহৃত পরিমাণের ইনপুট ফিল্ডের বৈধতা, সুতরাং কেবল পশ্চিমা অঙ্কগুলি। "পজিটিভ" বলতে আমার অর্থ শূন্যের চেয়ে বড়। আমি কি নিম্নলিখিতটি গ্রহণ করব: "+২" হ্যাঁ, "0.1e1" না, "1.000" নিশ্চিত না কেন। তবে, আপনি যদি এমন কোনও উত্তর সরবরাহ করতে পারেন যা এই বিভিন্ন বিশেষায়িত পরিস্থিতিতে অন্তর্ভুক্ত / বাদ দিতে সামঞ্জস্য করা যায় আমি আপনাকে অতিরিক্ত আপ দেওয়ার প্রতিশ্রুতি দিয়েছি (এবং আমি নিশ্চিত যে অন্যরাও তা করবে)।
মিক বাইরন

উত্তর:


296

আপনার জন্য দুটি উত্তর:

  • পার্সিংয়ের উপর ভিত্তি করে

  • নিয়মিত প্রকাশ

মনে রাখবেন যে উভয় ক্ষেত্রেই, আমি ইতিবাচক নয় 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;
}

লাইভ টেস্টবেড (শীর্ষস্থানীয় শূন্যস্থান বা শ্বেতক্ষেত্র পরিচালনা না করে):

লাইভ টেস্টবেড ( শীর্ষস্থানীয় জিরো এবং হোয়াইটস্পেসের জন্য পরিচালনা সহ ):

আপনি যদি অস্বীকার করতে চান তবে 0কেবল এতে পরিবর্তন >= 0করুন > 0। (অথবা, সংস্করণ অনুমতি দেয় শূন্য নেতৃস্থানীয় যে, অপসারণ || "0"উপর replaceলাইন।)

কীভাবে এটি কাজ করে:

  1. সাদা সংস্করণ এবং নেতৃস্থানীয় শূন্যগুলিকে অনুমতি দেওয়া সংস্করণে:

    • str = str.trim(); যে কোনও নেতৃস্থানীয় এবং পিছনের হোয়াইটপেস সরিয়ে দেয়।
    • if (!str) একটি ফাঁকা স্ট্রিং ধরে এবং ফিরে আসে, বাকি কাজগুলি করার কোনও অর্থ নেই।
    • str = str.replace(/^0+/, "") || "0"; স্ট্রিং থেকে সমস্ত নেতৃস্থানীয় 0 গুলি সরিয়ে দেয় - তবে যদি এটি ফাঁকা স্ট্রিংয়ের ফলাফল হয় তবে একটি একক 0 পুনরুদ্ধার করে।
  2. Number(str): strএকটি সংখ্যায় রূপান্তর ; সংখ্যার ভাল একটি ভগ্নাংশ থাকতে পারে, বা হতে পারে NaN

  3. Math.floor: সংখ্যাটি কেটে ফেলুন (কোনও ভগ্নাংশের অংশ ছাড়ে)।

  4. String(...): ফলাফলটিকে সাধারণ দশমিক স্ট্রিংয়ে ফিরিয়ে দেয়। সত্যিই বড় সংখ্যার জন্য, এটি বৈজ্ঞানিক স্বরলিপিতে যাবে, যা এই পদ্ধতির ক্ষতি করতে পারে। (বিভাজনটি কোথায় তা আমি পুরোপুরি জানি না, বিশদের বিবরণটি রয়েছে তবে পুরো সংখ্যার জন্য আমি বিশ্বাস করি এটি এমন এক পর্যায়ে আপনি 21 অঙ্ক ছাড়িয়ে গেছেন [এই সময়ের মধ্যে নম্বরটি অত্যন্ত অপ্রচলিত হয়ে উঠেছে, আইইইই-754 হিসাবে ডাবল-স্পষ্টতা সংখ্যায় কেবল স্পষ্টভাবে 15 অঙ্কের শুদ্ধি রয়েছে ..)

  5. ... === str: এটি মূল স্ট্রিংয়ের সাথে তুলনা করে।

  6. n >= 0: এটি ইতিবাচক পরীক্ষা করুন।

নোট করুন যে এটি ইনপুটটির জন্য ব্যর্থ হয়েছে "+1", বৈজ্ঞানিক স্বরলিপিতে কোনও ইনপুট যা পর্যায়তে একই বৈজ্ঞানিক স্বরলিপিতে ফিরে আসে না String(...)এবং জাভাস্ক্রিপ্ট যে ধরণের সংখ্যা ব্যবহার করে (আইইইই-754 ডাবল-স্পষ্টতা বাইনারি ফ্লোটিং পয়েন্ট) প্রদত্ত মানটির চেয়ে আলাদা মানের কাছাকাছি যা সঠিকভাবে উপস্থাপন করতে পারে না (যার মধ্যে 9,007,199,254,740,992 এরও বেশি সংখ্যক পূর্ণসংখ্যা রয়েছে; উদাহরণস্বরূপ, 1234567890123456789ব্যর্থ হবে)। পূর্বেরটি একটি সহজ ফিক্স, দ্বিতীয়টি এত বেশি নয়।

নিয়মিত এক্সপ্রেশন

অন্য পদ্ধতিটি হ'ল স্ট্রিংয়ের অক্ষরগুলিকে একটি নিয়মিত অভিব্যক্তির মাধ্যমে পরীক্ষা করা, যদি আপনার লক্ষ্যটি কেবলমাত্র (বলুন) alচ্ছিকভাবে +অনুসরণ করা হয় যা উভয় দ্বারা অনুসরণ করা হয় 0বা সাধারণ দশমিক বিন্যাসে:

function isNormalInteger(str) {
    return /^\+?(0|[1-9]\d*)$/.test(str);
}

লাইভ টেস্টবেড:

কীভাবে এটি কাজ করে:

  1. ^: স্ট্রিংয়ের সাথে ম্যাচ শুরু

  2. \+?: একক, alচ্ছিককে মঞ্জুরি দিন +(যদি আপনি না চান তবে এটি সরান)

  3. (?:...|...): এই দুটি বিকল্পের মধ্যে একটিকে (ক্যাপচার গ্রুপ তৈরি না করে) মঞ্জুরি দিন:

    1. (0|...): 0নিজে থেকে অনুমতি দিন ...

    2. (...|[1-9]\d*): ... বা 0দশমিক সংখ্যা বাদে অন্য কিছু দিয়ে শুরু হওয়া সংখ্যা number

  4. $: স্ট্রিংয়ের সাথে ম্যাচ শেষ।

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


উভয় Number(' ')এবং Number('')রিটার্ন 0যখন ফেরত পাঠাবেন NaNপরিবর্তে।
নিউরিনো

ঠিক আছে কিন্তু @TJCrowder আমি প্রয়োজন মত '' 2A '' স্ট্রিং একরকম প্রত্যাখ্যাত হবে, parseIntআয় 2
নিউরিনো

@ নিউরিনো: /\D/.test('2a')সত্য (কারণ একটি অ-অঙ্ক আছে)। তাই সম্ভবত if (!/\D/.test(str) && !isNan((num = parseInt(str, 10))) { /* Valid number in num */}... শুধু আমার মাথার উপরে ... বন্ধ
টি জে Crowder

পারফরম্যান্স অনুযায়ী কোন পদ্ধতিটি দ্রুত হবে? বা কোনটি পরামর্শ দেওয়া হয়?
ফকবিথা

@ এফক্যাভিথা: জাভাস্ক্রিপ্টের কার্য সম্পাদনের প্রশ্নের উত্তর প্রায়শই "এটি নির্ভর করে" কারণ বিভিন্ন ইঞ্জিন একে অপরের থেকে অনেক আলাদা different আপনি jsperf.com ব্যবহার করে আপনার টার্গেট ইঞ্জিন / ব্রাউজারগুলি পরীক্ষা করতে পারেন । আমি মনে করি না যে এই অপারেশনটি কোনও প্রদত্ত অ্যাপ্লিকেশনটিতে অন্তরায় হতে পারে ... :-)
টিজে ক্রাউডার

76

সমাধান ঘ

যদি আমরা একটি জাভাস্ক্রিপ্ট পূর্ণসংখ্যাকে সর্বোচ্চ (অর্থাত্ ) মূল্য হিসাবে বিবেচনা করি তবে নিম্নলিখিত সংক্ষিপ্ত সমাধানটি পুরোপুরি কার্যকর হবে:4294967295Math.pow(2,32)-1

function isPositiveInteger(n) {
    return n >>> 0 === parseFloat(n);
}

বর্ণনাঃ

  1. জিরো-ফিল রাইট শিফট অপারেটর তিনটি গুরুত্বপূর্ণ কাজ করে:
    • দশমিক অংশ কাটা
      • 123.45 >>> 0 === 123
    • নেতিবাচক সংখ্যার জন্য শিফট করে
      • -1 >>> 0 === 4294967295
    • পরিসীমা "কাজ" MAX_INT
      • 1e10 >>> 0 === 1410065408
      • 1e7 >>> 0 === 10000000
  2. parseFloatস্ট্রিং সংখ্যার পার্সিং সঠিক করে ( NaNঅ-সংখ্যাযুক্ত স্ট্রিংয়ের জন্য সেটিংস )

পরীক্ষা:

"0"                     : true
"23"                    : true
"-10"                   : false
"10.30"                 : false
"-40.1"                 : false
"string"                : false
"1234567890"            : true
"129000098131766699.1"  : false
"-1e7"                  : false
"1e7"                   : true
"1e10"                  : false
"1edf"                  : false
" "                     : false
""                      : false

ডেমো: http://jsfiddle.net/5UCy4/37/


সমাধান 2

আর একটি উপায় সমস্ত সংখ্যাসূচক মানগুলির জন্য ভাল যা বৈধ যা Number.MAX_VALUEপ্রায় 1.7976931348623157e+308:

function isPositiveInteger(n) {
    return 0 === n % (!isNaN(parseFloat(n)) && 0 <= ~~n);
}

বর্ণনাঃ

  1. !isNaN(parseFloat(n))ফিল্টার করতে ব্যবহৃত হয় বিশুদ্ধ স্ট্রিং মূল্যবোধ, যেমন "", " ", "string";
  2. 0 <= ~~nনেতিবাচক এবং বৃহৎ অ পূর্ণসংখ্যা মান, ফিল্টার যেমন "-40.1", "129000098131766699";
  3. (!isNaN(parseFloat(n)) && 0 <= ~~n)আয় trueযদি মান উভয় সাংখ্যিক এবং ইতিবাচক ;
  4. 0 === n % (...)চেক যদি মান অ ভাসা হয় - এখানে (...)(3 দেখুন) হিসাবে মূল্যায়ন করা হয় 0ক্ষেত্রে false, এবং 1ক্ষেত্রে true

পরীক্ষা:

"0"                     : true
"23"                    : true
"-10"                   : false
"10.30"                 : false
"-40.1"                 : false
"string"                : false
"1234567890"            : true
"129000098131766699.1"  : false
"-1e10"                 : false
"1e10"                  : true
"1edf"                  : false
" "                     : false
""                      : false

ডেমো: http://jsfiddle.net/5UCy4/14/


পূর্ববর্তী সংস্করণ:

function isPositiveInteger(n) {
    return n == "0" || ((n | 0) > 0 && n % 1 == 0);
}

ডেমো: http://jsfiddle.net/5UCy4/2/


একটি খালি স্ট্রিং বা বড় সংখ্যা যেমন 1290000981231123.1 ব্যবহার করুন - jsfiddle.net/5UCy4/1
নিকো

@gdoron একই হিসাবে ~~val, ভগ্নাংশ অংশ কাটা এটি দুটির পরিবর্তে এক বিটওয়াস অপারেশন করার পরে এটি একটু দ্রুত।
ভিজিওন

দুর্দান্ত উত্তর। আমি ব্যক্তিগতভাবে পাঠযোগ্যতার জন্য আরও কিছুটা ভার্জোজ হওয়ার পক্ষে থাকব(!isNaN(parseFloat(n)) && n % 1 === 0 && 0 <= ~~n)
রামি নসর

true, false, 0xFF, এবং অন্যান্য মানগুলি isPositiveIntegerএটি সনাক্ত না করেই তৈরি করে ।
জিয়োনক্রস

1
এটি এমনকি প্যাডেড জিরো পরিচালনা করে (ভাল!) আপনি এটি আপনার পরীক্ষায় যুক্ত করতে পারেন।
রাশাক

21

দেখে মনে হচ্ছে কোনও নিয়মিত প্রকাশ যাবার উপায়:

var isInt = /^\+?\d+$/.test('the string');

"1.0" বা ".1e1" অনুমোদিত না হলে বন্ধ করুন।
ফ্রোগজ

ঠিক আছে 1290000192379182379123782900192981231 এটি একটি পূর্ণসংখ্যা তবে এটি জাভাস্ক্রিপ্টের নেটিভ সংখ্যাগুলিতে যথাযথভাবে উপস্থাপনযোগ্য নয়, সুতরাং একটি রেজেক্সের সাহায্যে এখনও এটি একটি সংখ্যাসূচক রূপান্তর করা এবং এটি কার্যকর হয়েছে কিনা তা যাচাই করার প্রয়োজন।
পয়েন্টি

এটি একটি খুব অনর্থক সমাধান।
usr

@ অ্যাসার: আমি মনে করি এটি 0আপনাকে এমনভাবে নেতৃত্ব দেয় যেখানে আপনি সাধারণত আশা করেন না, তবে বেশিরভাগ অংশে এটি দুর্দান্ত দেখা যায়।
টিজে ক্রাউডার

এটি সর্বাধিক 2 -1 31-1 হওয়া সীমাটি চেক করে না এবং এটি আরবিক সংখ্যার অনুমতি দেয় না। এটি একটি হ্যাক, একটি ভাল সমাধান নয়। সেরা সমাধানটিতে এই প্রশ্নের সর্বাধিক উত্স রয়েছে। কেন যে ব্যবহার করবেন না? এটা প্রতিটি ক্ষেত্রে ভাল।
usr

17

আধুনিক সমাধান যা নোডে এবং সমস্ত ব্রাউজারের 90% এর বেশি জুড়ে (আই ও অপেরা মিনি ব্যতীত) কাজ করে তা হল নাম্বার আইস ইন্টেগার ব্যবহার করার পরে একটি সাধারণ ইতিবাচক চেক।

Number.isInteger(x) && x > 0

এটি ECMAScript 2015 এ চূড়ান্ত করা হয়েছিল ।

function isPositiveInteger(x) {
    return Number.isInteger(x) && x > 0
}

পলিফিলটি হ'ল:

Number.isInteger = Number.isInteger || function(value) {
  return typeof value === 'number' && 
    isFinite(value) && 
    Math.floor(value) === value;
};

আপনার যদি এমন ইনপুট সমর্থন করতে হয় যা স্ট্রিংয়ে থাকতে পারে বা সংখ্যা আকারে তবে আপনি এই ফাংশনটি ব্যবহার করতে পারেন বিদ্যমান বিদ্যমান উত্তরগুলির (2/1/2018) কিছু ইনপুট ব্যর্থ হওয়ার পরে আমি একটি বড় পরীক্ষার স্যুট লিখেছিলাম

function isPositiveInteger(v) {
  var i;
  return v && (i = parseInt(v)) && i > 0 && (i === v || ''+i === v);
}

4

এটি প্রায় একটি সদৃশ প্রশ্ন:

জাভাস্ক্রিপ্টে দশমিক সংখ্যা বৈধ করুন - ইসনুমারি ()

এর উত্তরটি হ'ল:

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

সুতরাং, একটি ইতিবাচক পূর্ণসংখ্যা হবে:

function isPositiveInteger(n) {
  var floatN = parseFloat(n);
  return !isNaN(floatN) && isFinite(n) && floatN > 0
      && floatN % 1 == 0;
}

আমি জানি যে এটি 'জাভাস্ক্রিপ্টে বৈধ সংখ্যা' প্রশ্নের প্রায় নকল, আমি পুরো বিষয়টিটি পড়েছি, তবে আমি ভেবেছিলাম বিশেষভাবে পূর্ণসংখ্যার স্ট্রিং উপস্থাপনা সম্পর্কে একটি প্রশ্ন এটি নিজের পৃষ্ঠাটির জন্য প্রাপ্য।
মিক বাইরন

2
return ((parseInt(str, 10).toString() == str) && str.indexOf('-') === -1);

আপনি '0001' এর মতো স্ট্রিং দিলেও কাজ করবে না


2

আমার ফাংশনটি পরীক্ষা করে যদি নম্বরটি + ve হয় এবং দশমিক মানও হতে পারে।

       function validateNumeric(numValue){
            var value = parseFloat(numValue);
            if (!numValue.toString().match(/^[-]?\d*\.?\d*$/)) 
                    return false;
            else if (numValue < 0) {
                return false;
            }
            return true;        
        }

2

উপরের ভিজিওএন এর উত্তরটি তৈরি করতে আপনি যদি jQuery বৈধতা প্লাগইন ব্যবহার করেন তবে আপনি এটি ব্যবহার করতে পারেন:

$(document).ready(function() {
    $.validator.addMethod('integer', function(value, element, param) {
        return (value >>> 0 === parseFloat(value) && value > 0);
    }, 'Please enter a non zero integer value!');
}

তারপরে আপনি আপনার সাধারণ নিয়ম সেটগুলিতে ব্যবহার করতে পারেন বা এটিকে এটিকে গতিশীলভাবে যুক্ত করতে পারেন:

$("#positiveIntegerField").rules("add", {required:true, integer:true});

2

সহজ

function isInteger(num) {
  return (num ^ 0) === num;
}

console.log(isInteger(1));

আপনি নম্বর প্রসারিত করতে এবং প্রোটোটাইপের মাধ্যমে এতে ফাংশন নির্ধারণ করতে পারেন।


1

আপনি যদি এইচটিএমএল 5 ফর্ম ব্যবহার করেন তবে আপনি min="0"ফর্ম উপাদানটির জন্য বৈশিষ্ট্যটি ব্যবহার করতে পারেন <input type="number" />। এটি সমস্ত বড় ব্রাউজার দ্বারা সমর্থিত। এটি যেমন সাধারণ কাজের জন্য জাভাস্ক্রিপ্ট জড়িত না, তবে নতুন এইচটিএমএল স্ট্যান্ডার্ডে সংহত করা হয়েছে। এটি https://www.w3schools.com/tags/att_input_min.asp এ নথিভুক্ত করা হয়েছে


0

(~~a == a)aস্ট্রিং কোথায়


1
এটি নেতিবাচক সংখ্যার জন্য ব্যর্থ হবে: ~~"-1" == "-1"ফিরে আসবে true। এবং ওপি কেবল ইতিবাচক পূর্ণসংখ্যা চেয়েছিল।
ইগোর মিল্লা

1
'' এবং '' এর জন্যও ব্যর্থ।
neverfox

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.