- - PR -
正規表現について
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-09-24 16:08
いつもお世話になっています。イルカと申します。
現在ASP.netでテキストボックスに入力された Windows形式のファイルパスの検証を RegularExpressionValidatorを用いて行おうとしています。 次のような形式の妥当性を検証しようとしているのですが、 うまく正規表現が利用できません。 どのようにすればよいのか教えてください。 検証したいフォーマット:(\文字列)\ファイル名.拡張子 条件: ()で囲まれた箇所は1回以上の繰り返しを許可する。 ファイル名は拡張子付きで指定されなければいけない。 (拡張子は何でも構わない) 例:C:\project\app\test.tl よろしくお願いします。 | ||||||||||||||||
|
投稿日時: 2003-09-24 16:40
のような感じの書式をチェックするような正規表現をちょちょいと作ってみましたが、
のようなイメージかな? しかし念のためですが、これでは次のような不正パスも通りますから、こんな程度の正規表現ではまだまだ足りませんので。
| ||||||||||||||||
|
投稿日時: 2003-09-24 16:50
読み込みならば、
・File.Exist メソッド 書き込みならば、 ・テスト的にファイルを作成してみて、削除する で、検証できないでしょうか? | ||||||||||||||||
|
投稿日時: 2003-09-24 17:32
ども、ほむらです。
正規表現の場合、良くわからないときは反対の条件を 指定してあげるとうまくいったりします。 たとえば。
こんな感じでどうでしょう。。。 実際には¥は二つ重ねる必要があるかもしれません。 ちなみに、[^〜]+ がファイルの部分です。 #UNCは必要ないようなので修正 #拡張子の部分はがんばってみてください(笑 [ メッセージ編集済み 編集者: ほむら 編集日時 2003-09-24 17:44 ] | ||||||||||||||||
|
投稿日時: 2003-09-24 18:52
ぢゃん♪さん、daiさん、ほむらさん
ご返答ありがとうございます。
の形式が許可されてしまいます。
{1}を指定してみてもうまくいかなかったのですが 何がいけないのでしょうか。 よろしくお願いします。 [ メッセージ編集済み 編集者: イルカ 編集日時 2003-09-24 19:05 ] | ||||||||||||||||
|
投稿日時: 2003-09-25 09:48
ども、ほむらです。
すでに気が付いているかもしれませんが [^¥/:;,*?<>|]の¥は二つ重ねる必要があります。 ファイル名で使用できない文字が知りたければ エクスプローラーから名前の変更で¥とか半角を使用すれば (警告として)一覧が表示されます # []の内部でもメタキャラクタは使用できるので # ¥/では/を指定したのと同じになってしまいます #以下追加 ちなみに。
という正規表現の.は一文字のワイルドカードなので 文字の種類は問いません。なのでC:\\も可能なんです。。。 もし、僕的な正規表現で表現するなら
でしょうか。たぶん思ったとおりに動くと思うのですが。。。 これならファイル名と拡張子も取得できるようになっているのは蛇足です(笑 [ メッセージ編集済み 編集者: ほむら 編集日時 2003-09-25 10:01 ] [ メッセージ編集済み 編集者: ほむら 編集日時 2003-09-25 10:04 ] | ||||||||||||||||
|
投稿日時: 2003-09-25 12:46
"/"はエスケープしないといけないのではないですか? としても、
も通りそうです。
普段使っているやつをちょっとアレンジしたものです。 一応ドット付の(で始まる)ディレクトリ、拡張子なしのファイル名でもOKのようです。 相対ディレクトリもいけます。自由度を考えすぎてミスってるかもしれません。 拡張子が必要なら
かな? 自信なし。 ファイル名に使用する文字が不足していたら2番目以降の[]を補う必要があります。 回答にあったように否定を使うのもよいです。 [ メッセージ編集済み 編集者: Marionette 編集日時 2003-09-25 13:07 ] | ||||||||||||||||
|
投稿日時: 2003-09-25 13:25
Marionetteさん、ほむらさんありがとうございます。
確かに
で思うように動作できるようになりました。 私が行おうとしているのはファイル名が日本語の場合も許可するので、 ほむらさんのパターンだと通らないですね。 しかし、
のように\\を不可にすることができますね。 これを参考にうまく組合わせてみようと思います。 ありがとうございます。 [ メッセージ編集済み 編集者: イルカ 編集日時 2003-09-25 13:31 ] |