मैंने स्टैक ओवरफ़्लो पर देखा है ( वर्णों को प्रतिस्थापित करते हुए .. एह , कैसे जावास्क्रिप्ट ने RegExp , आदि से संबंधित यूनिकोड मानक का पालन नहीं किया है ) और वास्तव में प्रश्न का एक ठोस उत्तर नहीं मिला है:
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[^,]+$/;इसे रोकने के लिए कुछ का उपयोग कर सकते हैं ।