2013-10-08 7 views
10

मैं मुसीबत एक regex यूआरएल मल (मूल रूप से, अक्षरांकीय "शब्दों" एकल डैश द्वारा अलग)एक स्लग से मेल खाने के लिए Regex?

this-is-an-example 

मैं इस Regex ले कर आए हैं मैच के लिए बनाने आ रही हैं: /[a-z0-9\-]+$/ और जब तक यह प्रतिबंधित करता है केवल अक्षरांकीय अक्षर और डैश के लिए स्ट्रिंग, यह अभी भी इस तरह के कुछ झूठे सकारात्मक पैदा करता है:

-example 
example- 
this-----is---an--example 
- 

मैं नियमित अभिव्यक्ति के साथ काफी बुरा हूँ, इसलिए किसी भी मदद की सराहना की जाएगी।

+0

प्रोग्रामिंग भाषा क्या है? – zzzzBov

+0

@zzzzBov मैं PHP का उपयोग कर रहा हूं (preg_match फ़ंक्शन के साथ)। – federicot

उत्तर

37

आप इस का उपयोग कर सकते हैं:

/^ 
    [a-z0-9]+ # One or more repetition of given characters 
    (?:   # A non-capture group. 
    -   # A hyphen 
    [a-z0-9]+ # One or more repetition of given characters 
)*   # Zero or more repetition of previous group 
$/ 

यह मिलान हो जाएगा:

  1. शुरुआत में अक्षरांकीय वर्णों का एक अनुक्रम।
  2. फिर यह एक हाइफ़न से मेल खाता है, फिर अल्फान्यूमेरिक वर्णों का अनुक्रम, 0 या अधिक बार।
+0

ग्रेट! यह _almost_ जैसा मैं चाहता हूं काम करता है। क्या आप एक शब्द से मेल खाने के लिए इसे ट्विक कर सकते हैं? (मैं यह उल्लेख करना भूल गया कि एकल शब्दों को वैध स्लग भी माना जाता है)। – federicot

+1

@fedeetz: '*' (0 या अधिक मैचों) – anubhava

+0

@fedeetz ट्वीड के साथ अंतिम '+' को प्रतिस्थापित करें। –

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