2013-10-08 9 views
10

sorunla karşılaştım Regex bu Regex ile geldim

this-is-an-example 

(tek tire ile ayrılmış temelde, alfanümerik "kelimeleri") URL salyangozlar maç için oluşturma yaşıyorum

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

normal ifadelerde ile oldukça kötüyüm, bu nedenle herhangi bir yardım mutluluk duyacağız: sadece alfabetik karakterler ve tire dize, hala bu gibi bazı yanlış pozitif üretir.

+0

Hangi programlama dilleri? – zzzzBov

+0

@zzzzBov PHP kullanıyorum (preg_match işleviyle). – federicot

cevap

37

Bunu kullanabilirsiniz:

/^ 
    [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 
$/ 

Bu maç olacak:

  1. başında alfanümerik karakter dizisi.
  2. Ardından, bir tire, daha sonra bir veya daha fazla sayıda alfanümerik karakter dizisi eşleşecektir.
+0

Harika! Bu, istediğim gibi _almost_ çalışır. Tek bir kelimeyi eşleştirmek için onu değiştirebilir misin? (Tek kelimelerin de geçerli sümüklü böcekler olarak kabul edildiğini söylemeyi unuttum). – federicot

+1

@fedeetz: Sadece last '+' yerine '*' (0 ya da daha fazla eşleşme) ile değiştirin – anubhava

+0

@fedeetz Tweaked. –

İlgili konular