0

相対 URL をチェックする次の正規表現があります。URL をチェックし、OK の場合は true を返す関数があります。次のように動作します。

MyCustomPage.aspx?name=John&last=smith&type=Person

しかし、姓にスペースで区切られた2つ以上の単語がある場合、次はfalseを返します

MyCustomPage.aspx?name=John&last=smith+connors&type=Person

+connorsを参照してください。これは評価されません...しかし、チェックを外すと..うまくいきます..

これは正規表現です

Regex IsRelative = new Regex(@"^([a-zA-Z0-9]+)+\.[a-zA-Z/]*(((\?)([a-zA-Z]*=\w*)){1}((&)([a-zA-Z]*=\w*))*)?$");

私の関数では、その正規表現に基づいてURLが有効かどうかを確認します

IsRelative(MyUrl)

そこにスペースがある場合は通過させる必要がありますが、方法がわかりません。

4

3 に答える 3

1

引数値としてプラス記号(+)を許可する必要があります。

Regex IsRelative = new Regex(@"^([a-zA-Z0-9]+)+\.[a-zA-Z/]*(((\?)([a-zA-Z]*=[\w\+]*)){1}((&)([a-zA-Z]*=[\w\+]*))*)?$");

ここで、正規表現が引数値をチェックするに変更\wしました。[\w\+]この変更により、各引数の等号(=)の右側にプラス記号(+)が付いたURLが許可されるようになります。

于 2012-08-28T19:58:40.627 に答える
1

正規表現では、\ wを使用して、名前と値のペアの=の後に続くものと一致させています。ただし、URLを処理しているため、URLをデコードするか、+が\w文字クラスの一部ではないという事実を考慮する必要があります。

于 2012-08-28T19:58:50.237 に答える
1

http://www.regexplanet.com/advanced/java/index.html これは正規表現のテスト ページです

あなたの問題のキャッチは、「プラス」が正規表現の予約記号であることです。それを処理するには、「バックスラッシュ」を配置する必要があります。

^name=([A-Za-z]+)&last=([A-Za-z+]+)&type=([A-Za-z]+)$

于 2012-08-28T20:01:59.697 に答える