2012-01-16 9 views
1

私は書き直しがあるWebサービスを持っています。クエリでハイフンやダッシュを許可する必要があります。ここで は私のリライトです:REGEXはハイフンを許可する問題を書き換えます

rewrite ^/app/api/sanction/([0-9]+)/athleteList/([a-zA-Z0-9,]+)/-([0-9,]+)$ /app/athleteList.phtml?s=$1&l=$2&c=$3 last; 

クエリは、このような正常に動作します:私はここにダッシュまたはハイフンを入れたときに

/app/api/sanction/35172/athleteList/MLEVEL07/25001,24450 

しかし、クエリが失敗します。

/app/api/sanction/35172/athleteList/MLEVEL-07/25001,24450 

あなたが見ることができるように、私は私がここで間違ってやっても何のわからない正規表現で記載されているハイフンを、持っている...

答えて

3

あなたは前のグループにハイフンを置く必要があります。この意志、しかし、試合は

([a-zA-Z0-9,-]+)/([0-9,]+) 

「--- 1020年、02-1- - - を、」私はこれが何であるかわからないんだけどあなたは欲しい。したがって、私の最初の提案は、今修正:

([a-zA-Z0-9,]+)(-([0-9]+))?/-([0-9,]+) 

これが唯一の "weofhw234fhweo、sdfsff3284982-20423400" とないにマッチします " - 、j2j、f9223-2-3402--0d-f0s-F"

0

だけ[]の終わりに、([a-zA-Z0-9,-]+)内部-を追加文字クラスは、次の/後にハイフンを削除します。

rewrite ^/app/api/sanction/([0-9]+)/athleteList/([a-zA-Z0-9,-]+)/([0-9,]+)$ /app/athleteList.phtml?s=$1&l=$2&c=$3 last; 
#----------------------------------------------------------^^^^^^^^ 
+0

ああ、マイケルに感謝します(パームは私の額を叩く!) - マット –

1

私はあなたがダッシュを紛失したと思います。このようにする必要があります。

rewrite ^/app/api/sanction/([0-9]+)/athleteList/([a-zA-Z0-9,-]+)/([0-9,]+)$ /app/athleteList.phtml?s=$1&l=$2&c=$3 last; 

「 - 」は「/」の後から括弧内に移動しました。ダッシュが角括弧の中の最後の文字である場合、(a-zのように)文字の範囲をマークする特別な意味はありません。