1の2つのフォーマットで入力された数字だけを受け入れるhtml入力タグを作成しようとしており、他のすべての入力を拒否しています。私はダッシュを必要とするなど、のみこれらの形式の番号、受け入れたくなぜ、私は次のようになります: "正規表現が無効です。Uncaught SyntaxError。Invalid escape。"
:
1234-12
と
1234-12-12
注:これは、日付ではなく、法的章番号のためではありません
正規表現について私が読んでいるすべては、次のものがうまくいくはずだと言いますが、そうではありません。 Chromeで
<input class="form-control"
type="text"
pattern="^(\d{4}\-\d{2}\-\d{2})|(\d{4}\-\d{2})$"
required />
デベロッパーツールコンソールエラー:
Pattern attribute value
^(\d{4}\-\d{2}\-\d{2})|(\d{4}\-\d{2})$
is not a valid regular expression: Uncaught SyntaxError: Invalid regular expression: /^(\d{4}-\d{2}-\d{2})|(\d{4}-\d{2})$/: Invalid escape
「\」を「 - 」に置き換えます。 –
正規表現に無効なエスケープがあるため、「無効なエスケープ」が発生しています。文字クラス( '[]')の外側では、 '-'は特別な意味を持ちません。したがって、 '\ - 'は無効なエスケープです。 –
@ T.J.Crowder:ここで混乱している部分は、 '/ \ - /'はJSの正当な正規表現であり、 '/ \ -/u'はそうではないということです。通常、(ほとんどすべての)アイデンティティエスケープはエラーではありませんが、厳密には必要ではありませんが、許可されています。 – Joey