2016-04-14 17 views
2

何か(多分それはあまりにも多くのループです) をワークアウトとタイミングされていない、私はそれが同様にタイムアウトするMVC(C#の)Webアプリケーションの原因だと思う...正規表現は私の正規表現と多分間違っ

正規表現次のとおりです。

public const string UrlPartPost = @"^([0-9a-zA-Z-/]*){1,256}$"; 

私はこのようにそれを使用します。

Regex.Match(urlPart3, RegExKeys.UrlPartPost, RegexOptions.IgnoreCase).Success 

私はライブのテストを追加 - もタイムアウトさ: https://regex101.com/r/vZ0lN5/1をそれがタイムアウトにならないので、私はそれを修正することができますどのようにtest1の-test2の-test3に-TEST4-test_5

これは結構です:test1の-test2の-test3に-TEST4、TEST5

この回はアウト?

更新日: 「*」とは正確に何が想定されていますか?

+0

ちょうど '[\ DA-ZA-Z - /] +'または '[0-9a- zA-Z - /] {1,256} ' –

+0

私はアスタリスクを持っていたのを忘れていました...それが何であるかわからず、文字列の長さが1から256の間であることを確認する必要があります... – Yovav

+0

まあ、私はあなたのテスト文字列がタイムアウトしているのを見ていませんが、パターンに基づいて成功していません。 https://regex101.com/r/vZ0lN5/2を参照してください。 – Saleem

答えて

5

*は、できるだけ0回以上一致することを意味します。

あなたの正規表現は大惨事に逆戻りしています。

あなたの正規表現は本当に意味をなさないので、あなたがマッチさせようとしていることを説明したいかもしれません。大文字小文字を区別しない修飾子を使用する場合は、A-Za-zも必要ありません。

あなたが指定した文字の1から256までの文字列を持っていることを確認したい場合は、これを試してください:^([-0-9a-z/]){1,256}$

+0

私は眠りにつける必要があると思います。目を覚ますと、なぜアスタリスクをそこに置いたのか(なぜなら)それなしではうまくいくようだ...私はフォワードスラッシュを許可しようとしていたと思う... – Yovav