2009-05-27 18 views
5

के साथ प्रतिस्थापित करें मेरे पास कुछ जावास्क्रिप्ट है जो कुछ कुकीज़ पढ़ता है, और कुछ मेल खाता है। मैं नियमित अभिव्यक्ति के कुछ हिस्सों को पकड़ने और बाद में उनका उपयोग करने के लिए समूह का उपयोग कर रहा हूं। हालांकि मुझे यूनिकोड वर्णों के साथ कोई समस्या है। अगर मेरे पास \ u25BA ► जैसा कोई चरित्र है, जब मुझे यह समूह किसी समूह में मिलता है, तो यह उस यूनिकोड वर्ण के बजाय स्ट्रिंग '\ u25BA' देता है जिसे मैं ढूंढ रहा हूं। अगर मैं चरित्र निर्दिष्ट करता हूं, तो मैं समस्या को ठीक कर सकता हूं, लेकिन मैं इसे अधिक सामान्य रूप से काम नहीं कर सकता। निम्नलिखित के रूप में मैं यह करना चाहते हैं काम करेगा:जावास्क्रिप्ट मैच और यूनिकोड

var matches=theOnclick.match(/.*\(event, ?"([^"]*)", ?"([^"]*)".*\)/); 
var expand=matches[1].replace(/\\u25BA/, '\u25BA'); 

लेकिन यह काम नहीं करेगा:

var expand=matches[1].replace(/\\u([0-9A-Z])/, '\u\1'); 

किसी भी सुझाव?

अधिक जानकारी: आपके उत्तरों के लिए धन्यवाद। मुझे थोड़ा और पृष्ठभूमि जोड़ने दो। मुझे लगता है कि समस्या यह है कि मैं अपने मैचों को एक अवधि पर "ऑनक्लिक" से प्राप्त कर रहा हूं। मैंने नीचे थोड़ा और विस्तृत उदाहरण शामिल किया है। यदि मेरे पास यूनिकोड वर्णों के साथ सामान्य स्ट्रिंग है, जब मैं एक मैच करता हूं, तो मुझे यूनिकोड वर्ण मिलते हैं। हालांकि, जब मैं ऑनक्लिक के मूल्य से स्ट्रिंग को पकड़ता हूं, तो मुझे इसके बजाय यूनिकोड एस्केप अनुक्रम मिलता है। तो मैं यूनिकोड एस्केप दृश्यों को यूनिकोड वर्णों में वापस बदलने की कोशिश कर रहा हूं। मुझे उम्मीद है कि इसका कोई अर्थ है। शायद ऐसा करने का एक और तरीका है।

नीचे दिए गए उदाहरण में, बार व्यवहार करता है जैसा मैं चाहता हूं, और foo नहीं करता है।

<html> 
<body> 
<span id='foo' onclick='expandCollapse(event, "►", "▼");'>foo</span> 
<script type='text/javascript'> 
var foo= document.getElementById('foo').onclick+''; 
alert(foo); 
var foomatches=foo.match(/.*\(event, ?"([^"]*)", ?"([^"]*)".*\)/); 
alert(foomatches); 
var bar='expandCollapse(event, "►", "▼");' 
var barmatches=bar.match(/.*\(event, ?"([^"]*)", ?"([^"]*)".*\)/); 
alert(barmatches); 
</script> 
</body> 
</html> 

उत्तर

1

क्या

var expand=matches[1].replace(/\\u([0-9A-Z])/, '\1'); 

के बारे में? मुझे नहीं लगता कि आपको वहां से बचने वाले \u की आवश्यकता है।

3

मुझे लगता है कि आपका \ 1 गलत है। यह होना चाहिए की तरह:

"\u2603".replace(/(.)/, "$1")) 

$ 1 प्रतिस्थापन पाठ में एक बैक-संदर्भ है।

लेकिन मुझे पूरा यकीन नहीं है कि आप क्या करने की कोशिश कर रहे हैं। ध्यान रखें कि आप केवल यूनिकोड अक्षरों के साथ उपयोग किया जा सकता है। तो रेगेक्स में आप एक शाब्दिक \ "एक शाब्दिक यू से मेल खाते हैं। और आप प्रतिस्थापन पाठ में एक यू है।

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