সাধারণত আপনার ইনপুট ক্ষেত্রগুলি ব্যবহার করা বিবেচনা করা উচিত যা সংখ্যার মানগুলির জন্য নিখরচায় পাঠ্য ইনপুটটিকে মঞ্জুরি দেয় না। তবে কিছু ক্ষেত্রে থাকতে পারে, যখন আপনাকে ইনপুট ফর্ম্যাটটি অনুমান করতে হবে। উদাহরণস্বরূপ জার্মানিতে 1.234,56 এর অর্থ মার্কিন যুক্তরাষ্ট্রে 1,234.56। দশমিক হিসাবে কমা ব্যবহার করে এমন দেশগুলির তালিকার জন্য https://salesfor.stackexchange.com/a/21404 দেখুন ।
আমি সর্বোত্তম অনুমান করতে এবং সমস্ত অ-সংখ্যাযুক্ত অক্ষরগুলি সরিয়ে ফেলার জন্য নীচের ফাংশনটি ব্যবহার করি:
function parseNumber(strg) {
var strg = strg || "";
var decimal = '.';
strg = strg.replace(/[^0-9$.,]/g, '');
if(strg.indexOf(',') > strg.indexOf('.')) decimal = ',';
if((strg.match(new RegExp("\\" + decimal,"g")) || []).length > 1) decimal="";
if (decimal != "" && (strg.length - strg.indexOf(decimal) - 1 == 3) && strg.indexOf("0" + decimal)!==0) decimal = "";
strg = strg.replace(new RegExp("[^0-9$" + decimal + "]","g"), "");
strg = strg.replace(',', '.');
return parseFloat(strg);
}
এটি এখানে চেষ্টা করুন: https://plnkr.co/edit/9p5Y6H?p= পূর্বরূপ দেখুন
উদাহরণ:
1.234,56 € => 1234.56
1,234.56USD => 1234.56
1,234,567€ => 1234567
1.234.567 => 1234567
1,234.567 => 1234.567
1.234 => 1234
1,234 => 1234
1.2345 => 1.2345
0,123 => 0.123
ফাংশনটির একটি দুর্বল বিন্দু রয়েছে: আপনার কাছে 1,123 বা 1.123 থাকলে ফর্ম্যাটটি অনুমান করা সম্ভব নয় - কারণ স্থানীয় ফর্ম্যাটটির উপর নির্ভর করে উভয়ই কমা বা হাজার-বিভাজক হতে পারে। এই বিশেষ ক্ষেত্রে ফাংশনটি বিভাজককে হাজার-বিভাজক হিসাবে গণ্য করবে এবং ১১৩৩ এ ফিরে আসবে।