আমি স্ট্যাক ওভারফ্লো দেখেছি ( অক্ষরগুলি প্রতিস্থাপন করে .. হ্যাঁ , জাভাস্ক্রিপ্ট কীভাবে রেজিএক্সপ ইত্যাদি সম্পর্কিত ইউনিকোড স্ট্যান্ডার্ডটি অনুসরণ করে না ) এবং এই প্রশ্নের সত্যই উত্তর খুঁজে পাইনি:
How can JavaScript match for accented characters (those with diacritical marks)?
আমি UI তে একটি ক্ষেত্রটি ফরমেটের সাথে মেলে ধরতে বাধ্য করছি: last_name, first_name
(শেষ [কমা স্থান] প্রথমে) , এবং আমি ডায়াক্রিটিকদের জন্য সমর্থন সরবরাহ করতে চাই তবে স্পষ্টতই জাভাস্ক্রিপ্টে এটি অন্যান্য ভাষা / প্ল্যাটফর্মের চেয়ে কিছুটা বেশি কঠিন।
আমি ডায়াস্রিটিক সমর্থন যুক্ত না করা পর্যন্ত এটি আমার আসল সংস্করণ ছিল:
/^[a-zA-Z]+,\s[a-zA-Z]+$/
সমর্থন যোগ করার জন্য বর্তমানে আমি তিনটি পদ্ধতির একটি নিয়ে বিতর্ক করছি, যার সবগুলিই আমি পরীক্ষা করেছি এবং কাজ করেছি (কমপক্ষে কিছুটা হলেও, আমি সত্যই জানি না যে "পদ্ধতির" দ্বিতীয় পদ্ধতির কী)) এখানে তারা:
স্পষ্টভাবে সমস্ত উচ্চারণযুক্ত অক্ষরগুলি তালিকাভুক্ত করছি যা আমি বৈধ (পঙ্গু এবং অত্যধিক জটিল) হিসাবে গ্রহণ করতে চাই:
var accentedCharacters = "àèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ";
// Build the full regex
var regex = "^[a-zA-Z" + accentedCharacters + "]+,\\s[a-zA-Z" + accentedCharacters + "]+$";
// Create a RegExp from the string version
regexCompiled = new RegExp(regex);
// regexCompiled = /^[a-zA-ZàèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ]+,\s[a-zA-ZàèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ]+$/
- এটি কোনও সমর্থিত উচ্চারণযুক্ত অক্ষরের সাথে সঠিকভাবে একটি শেষ / প্রথম নামের সাথে মেলে
accentedCharacters
।
আমার অন্য পদ্ধতিটি ছিল .
চরিত্রের শ্রেণিটি ব্যবহার করা, একটি সহজ প্রকাশের জন্য:
var regex = /^.+,\s.+$/;
- এটি প্রায় কোনও কিছুর জন্য মিলবে, কমপক্ষে: আকারে
something, something
। ঠিক আছে আমি মনে করি ...
সর্বশেষ পন্থা, যা আমি স্রেফ পেয়েছি এটি সম্ভবত সহজ ...
/^[a-zA-Z\u00C0-\u017F]+,\s[a-zA-Z\u00C0-\u017F]+$/
- এটি ইউনিকোডের অনেকগুলি চরিত্রের সাথে মেলে - পরীক্ষিত এবং কাজ করা, যদিও আমি ক্রেজি কিছু চেষ্টা করি নি, অনুষদের সদস্যদের নামগুলির জন্য আমাদের ভাষা বিভাগে দেখি কেবল সাধারণ স্টাফ।
আমার উদ্বেগগুলি এখানে:
- প্রথম সমাধানটি খুব সীমাবদ্ধ, এবং তন্দ্রা এবং এতে সংশ্লেষিত। যদি আমি দু'একটি চরিত্র ভুলে গিয়েছিলাম তবে এটি পরিবর্তন করা দরকার এবং এটি কেবল খুব ব্যবহারিক নয়।
- দ্বিতীয় সমাধানটি আরও ভাল, সংক্ষিপ্ত, তবে এটি সম্ভবত এটির চেয়ে অনেক বেশি মিলছে। ঠিক কী
.
মেলে তার কোনও সত্যিকারের ডকুমেন্টেশন আমি খুঁজে পাইনি , কেবলমাত্র "নিউলাইন চরিত্র ব্যতীত কোনও চরিত্র" ( এমডিএন-এর একটি টেবিল থেকে ) সাধারণকরণ । তৃতীয় সমাধানটি সর্বাধিক সুনির্দিষ্ট বলে মনে হচ্ছে, তবে কোনও গোটচ আছে? আমি অন্তত অনুশীলনে ইউনিকোড সঙ্গে খুব পরিচিত নই, কিন্তু এ খুঁজছেন কোড টেবিল / যে টেবিলের ধারাবাহিকতা ,
\u00C0-\u017F
অন্তত আমার প্রত্যাশিত ইনপুট জন্য, চমত্কার কঠিন বলে মনে হয়।- অনুষদগুলি তাদের নামের সাথে তাদের মাতৃভাষায় ফর্ম জমা দেবে না (যেমন, আরবি, চীনা, জাপানি, ইত্যাদি) সুতরাং আমাকে লাতিন-বর্ণচিহ্ন-সেট অক্ষরের বাইরে নিয়ে চিন্তা করতে হবে না
সুতরাং আসল প্রশ্ন (গুলি) : এই তিনটি পদ্ধতির মধ্যে কোনটি কাজের জন্য সবচেয়ে উপযুক্ত? নাকি এর থেকে আরও ভাল সমাধান আছে?
regex = /^[^,]+,\s[^,]+$/;
এটি প্রতিরোধ করার মতো কিছু ব্যবহার করতে পারেন ।