2016-12-31 8 views
3

パターンを使用して入力が有効なWindowsファイルパスであるかどうかを確認する入力フィールドを作成しようとしています。入力フィールドのパターン属性にこれを入れたときに 私が持っているパターンがパターンのHTML/Javascriptで無効なエスケープ

/^(?:[\w]\:|\\)(\\[a-zA-Z_\-\s0-9\.()[email protected]#$%^&=+';,{}\[\]]+)+\.(exe)$/g 

あるしかし、それは私がこれを書いているいくつかの異なる方法を試してみましたが、どれも思えない

Pattern attribute value ^(?:[\w]:|\)(\[a-zA-Z_-\s0-9.()[email protected]#$%^&=+';,{}[]]+)+.(exe)$ is not a valid regular expression: Uncaught SyntaxError: Invalid regular expression: /^(?:[\w]:|\)(\[a-zA-Z_-\s0-9.()[email protected]#$%^&=+';,{}[]]+)+.(exe)$/: Invalid escape

(コンソールに)言います働く

+0

どのようにパターンをパターン属性に「入れますか?それはJavaScriptを介してですか、それともHTMLの中に直接ありますか? – Pointy

+0

あなたは何を試そうとしていますか? \\(a-zA-Z _ \ - \ s0-9 \。()); –

+0

<入力ID = "パス"タイプ= "テキスト"パターン= "^(?:[\ w] 〜@@ $%^ &=+';、{} \ [\]] +)\ \(exe)$ ">':周囲のスラッシュが挿入されているので省略しているようです) –

答えて

3

エスケープする必要がある文字クラスの文字をエスケープするだけで、このエラーが発生します。

を使用して

pattern="(?:\w:|\\)(\\[\w\s.()[email protected]#$%^&=+';,{}[\]-]+)+\.exe" 

JSFiddle

詳細を参照してください:

  • ハイフンは、文字クラスの最後でなければなりません
  • 文字クラスの内部]必要があります脱出する
  • [.:がesacapedてはなりません
  • エスケープしてはいけません、それは特殊文字
  • [a-zA-Z0-9_] = \w
  • patternことはありませんが、常にデフォルトで固定されている、あなたは何^$アンカーを必要としません。
関連する問題