2013-10-08 12 views
10

私はURLのナメクジを一致させるために、トラブル正規表現の作成を抱えている(基本的には、英数字の「言葉」は単一ダッシュで区切られた)正規表現でスラッグにマッチさせるには?

this-is-an-example 

私はこの正規表現を作ってみた:/[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

素晴らしい!これは私が望むように_ほとんど一番です。あなたは1つの単語にもマッチするためにそれを微調整できますか? (私は、単一の言葉も有効なスラグとみなされていることを忘れていました)。 – federicot

+1

@fedeetz:最後の '+'を '*'(0回以上の一致)に置き換えてください。 – anubhava

+0

@fedeetz Tweaked。 –

関連する問題