2014-06-14 2 views
7

मैं निम्नलिखित समारोह का उपयोग कर रहा खास शब्द को उजागर करने और इसे अंग्रेज़ी"tashkel" के साथ अरबी शब्द का मिलान कैसे करें?

function highlight(str,toBeHighlightedWord) 
    { 

     toBeHighlightedWord="(\\b"+ toBeHighlightedWord.replace(/([{}()[\]\\.?*+^$|=!:~-])/g, "\\$1")+ "\\b)"; 
     var r = new RegExp(toBeHighlightedWord,"igm"); 
     str = str.replace(/(>[^<]+<)/igm,function(a){ 
      return a.replace(r,"<span color='red' class='hl'>$1</span>"); 
     }); 
     return str; 
    } 

में ठीक काम करता है, लेकिन यह अरबी पाठ के लिए नहीं खुराक

तो कैसे regex अरबी शब्द भी अरबी शब्द का मिलान कर संशोधित करने के लिए tashkel tashkel शब्द की सजावट और इन छोटे निशान पात्रों

हैं साथ tashkel बिना "محمد" इस "محمد": tashkel, जहां tashkel एक वर्ण उदाहरण मूल पात्रों के बीच में जोड़ा है साथ
+1

आप एक उन्नत जेएस रेगेक्स इंजन के लिए http://xregexp.com//https://github.com/slevithan/xregexp पर विचार कर सकते हैं जो कई अन्य चीजों के साथ यूनिकोड से निपट सकता है। – Tomalak

उत्तर

5

जावास्क्रिप्ट में, आप केवल इन वर्णों के साथ सीमा \b शब्द का उपयोग कर सकते हैं: [a-zA-Z0-9_]। एक ऐसा विचार यहां भी उपयोगी नहीं हो सकता है क्योंकि यह सुविधा जावास्क्रिप्ट द्वारा समर्थित नहीं है।

समस्या को हल करने का तरीका और एक प्रकार की शब्द सीमा "अनुकरण" का तरीका उन वर्णों के साथ एक नकारात्मक चरित्र वर्ग का उपयोग करना है जिन्हें आप पर हाइलाइट करना चाहते हैं (क्योंकि यह एक नकारात्मक चरित्र वर्ग है, यह उन पात्रों से मेल खाएगा जो ' शब्द का हिस्सा बनें।) बाएं सीमा के लिए एक कैप्चरिंग समूह में। दाईं ओर एक नकारात्मक लुकहेड बहुत आसान होगा।

toBeHighlightedWord="([^\\w\\u0600-\\u06FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF]|^)(" 
       + toBeHighlightedWord.replace(/([{}()[\]\\.?*+^$|=!:~-])/g, "\\$1") 
       + ")(?![\\w\\u0600-\\u06FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF])"; 
var r = new RegExp(toBeHighlightedWord, "ig"); 
str = str.replace(/(>[^<]+<)/g, function(a){ 
    return a.replace(r, "$1<span color='red' class='hl'>$2</span>"); 
} 

चरित्र पर्वतमाला कि यहाँ उपयोग किया जाता है यूनिकोड तालिका के तीन ब्लॉक से आते हैं:

  • FB50-FDFF(अरबी प्रस्तुति फार्म-ए)
    • 0600-06FF(अरबी) FE70-FEFF(अरबी प्रस्तुति फॉर्म-बी)

    ध्यान दें कि एक नए कैप्चरिंग समूह का उपयोग प्रतिस्थापन पैटर्न को बदलता है।

  • +0

    उपर्युक्त फ़ंक्शन के लिए कोई कामकाजी उदाहरण है या इस फ़ंक्शन को कार्यान्वित करने के लिए कैसे एक div टैग – Learning

    +0

    में लिपटे अरबी शब्दों को प्रतिस्थापित करने के लिए है, मैं इसे निम्नलिखित उदाहरण http://jsfiddle.net/u3k01bfw/13/ में कैसे काम कर सकता हूं मेरा मामला यह सभी खोजशब्दों से मेल नहीं खाता है – Learning

    संबंधित मुद्दे