2010-06-07 9 views
5

मेरे पास खिताब से स्लग बनाने के लिए सब कुछ है, लेकिन एक मुद्दा है। मेरा RegEx हाइफ़न के साथ रिक्त स्थान बदलता है। लेकिन जब कोई उपयोगकर्ता "हाय    " टाइप करता है तो "(एकाधिक रिक्त स्थान) स्लग" हाय ----- वहां "के रूप में समाप्त होता है। जब वास्तव में यह "हाय-वहां" होना चाहिए।टाइटल से स्लग बनाना?

क्या मुझे नियमित अभिव्यक्ति बनाना चाहिए ताकि यह केवल एक जगह को बदल दे जब एक चरित्र दोनों तरफ हो?

या ऐसा करने का कोई आसान तरीका है?

+0

समस्या यह है कि जावास्क्रिप्ट का उपयोग करके फ्लाई पर शीर्षक बनाए जाते हैं, ताकि उपयोगकर्ता को उसका यूआरएल कैसा दिखाई दे। यह एक सोशल नेटवर्क के लिए है। –

+1

जावास्क्रिप्ट एक प्रोग्रामिंग भाषा है, और यह regex कर सकते हैं। समस्या क्या है? –

उत्तर

2

यह सबसे आसान हो सकता है एक - अंतिम चरण के रूप में गुना करने के लिए बार-बार - रों:

replace /-{2,}/ by "-" 

या इस रिक्त स्थान को प्रभावित करने के लिए यदि आप केवल चाहते हैं, बजाय रिक्त स्थान गुना (अन्य कदम से पहले, स्पष्ट रूप से)

+0

+1: वह, या पहले चरण के रूप में रिक्त स्थान। –

5

बस एकाधिक व्हाइटस्पेस वर्णों से मेल खाते हैं।

s/\s+/-/g 
0

मैं '-' और साथ [\s]+ की जगह लेंगे तो''

+0

यह पूरी तरह से काम किया !! –

+0

आप एकाधिक- – Oli

6

के साथ बदलें [^\w-] मैं का उपयोग करें:

yourslug.replace(/\W+/g, '-') 

यह एक साथ एक या अधिक गैर अक्षरांकीय अक्षर की सभी घटनाओं की जगह एकल डैश

0

आप अग्रणी और पीछे वाले हाइफ़न से बचने के लिए पहले स्ट्रिंग को ट्रिम करना चाहते हैं।

function hyphenSpace(s){ 
    s= (s.trim)? s.trim(): s.replace(/^\s+|\s+$/g,''); 
    return s.split(/\s+/).join('-'); 
} 
2

डैनियल का जवाब सही है। "Dense13" करने के लिए

लेकिन अगर किसी को पूर्ण समाधान मैं इस समारोह की तरह की तलाश में है,

http://dense13.com/blog/2009/05/03/converting-string-to-slug-javascript/

धन्यवाद!

+0

ग्रेट सॉल्यूशन को प्रतिस्थापित करने के लिए अंत में एक अतिरिक्त '[\ -] +' => ''' 'जोड़ सकते हैं। आपको जिस भाषा की आवश्यकता है उसे 'से' और 'से' वर्र्स में बदलें। –

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