2

ネットワーク パスを検証するための正規表現を見つけようとしています\\comp\xyz\\comp\\comp\x\y\z\storage

私が現在持っているのは、ユーザーが情報を渡す単純な入力フィールドです。バックエンドがそれを使用してネットワーク上のコンピューターでプロセスを実行するクライアントに接続するため、バックエンドが間違って入れてほしくないので、最後に必要なのは、誰かが何かをタイプミスして他の何かの原因になることです速報。したがって、現在作業しているPHP側からこれを確認するのに簡単なpreg_matchがうまくいくと思いますが、これをJavaScriptとRuby上に構築されたレイヤーに組み込む必要があるため、すべての正規表現が等しいかどうかはわかりませんすべてのレベルで機能するものが必要かどうか..

また、後で戻ってくる時間を節約するために、最終的には、ユーザーがローカルパス、つまり、、、または前述のネットワークパスを実行できるようにする正規表現を理解する必要がありC:\ます。X:H:\path\to\folder

4

5 に答える 5

4

\\comp\x\y\z\storage:

/^\\(\\[^\s\\]+)+(\\)?$/

H:\path\to\folder:

/^([A-Za-z]:(\\)?|[A-Za-z]:(\\[^\s\\]+)+)(\\)?$/

Both:

/^(\\(\\[^\s\\]+)+|([A-Za-z]:(\\)?|[A-z]:(\\[^\s\\]+)+))(\\)?$/

実際のデモ: http://jsfiddle.net/DerekL/gLfdv/

于 2012-06-15T20:44:08.430 に答える
1

これは私のために働くようです:

([A-Z]:|\\)(\\[a-z0-9]+)*

問題がある場合はお知らせください(望ましくない、または追加の望ましい一致)

WHOLE フィールドを検証するには、次を使用します。

^([A-Z]:|\\)(\\[a-z0-9]+)*$

あなたの提案のすべてに一致するように編集する小さな改訂が必要でした(私の悪い):

^([A-Z]:|\\)(\\$|\\[a-z0-9]+)*$
于 2012-06-15T20:44:19.220 に答える
1

私が持っている最初のものについて:

^\\(\\[a-zA-Z_]\w*)+$

そして2番目のもの:

^[a-zA-Z]:(\\([a-zA-Z_]\w*)*)*$
于 2012-06-18T19:51:16.303 に答える
0

一般的なケース:

/^(\\\\\w+)(\\\w+)$/g   // matches \\comp, \\comp\xyz, \\comp\x\y\z\storage

特定のケース:

/^([A-Z]:)(\\|\\\w+)*$/g  // matches C:\, X:, H:\path\to\folder  
于 2012-06-15T20:53:02.150 に答える
0

これは、IP アドレスで始まる UNC パスと一致し、ファイル/フォルダー名のスペースを処理できます。C:\Users\User\some person\file.txt などの標準パス形式も検証します

/^((\\\\[a-zA-Z0-9-\.]+\\[a-zA-Z0-9`~!@#$%^&(){}'._-]+([ ]+[a-zA-Z0-9`~!@#$%^&(){}'._-]+)*)|([a-zA-Z]:))(\\[^ \\/:*?""<>|]+([ ]+[^ \\/:*?""<>|]+)*)*\\?$/

私は回答を次のように変更しました: PHP Regex for matching a UNC path

および: http://regexlib.com/REDetails.aspx?regexp_id=2285&AspxAutoDetectCookieSupport=1

https://jsfiddle.net/megamania/q5ncy7t6/で実際の動作を確認してください。

于 2016-10-20T11:39:30.053 に答える