2016-11-15 4 views
2

フォームの入力を私のフォームに制限しようとしています。特定の入力は、非常に固有の要件を持つID用です。なりの例:フォーム入力が制限されています

YY.MM.DD-000.00

私はそれを制限するために働いているコードは次のとおりです。

<form> 

<input type="text" class="form-control" id="nid" 
         name="nid" placeholder="@lang('app.nid')" 
    pattern="[00-99]{2}+\.[00-12]{2}\.[00-31]{2}+\-[000-999]{3}+\.[00-99]{2}" 
         title="YY.MM.DD-000.00" 
         value="" /> 
<button type="submit"> 
submit 
</button> 
</form> 

そして、私はそれを作るように見えることはできません受け入れ。それは悪いと思われるものの両方を私が与えるどんな入力も拒否しているようだ。

なぜ誰かが私を助けることができますか?

答えて

1

これはあなたの正規表現にある+のためです。あなたがそこで欲しいものは確かではありませんが、それらを削除すると動作します。これらの正符号は正規表現を無効にします。

別の問題は、あなたがエスケープした-です。これは、正規表現は、同様に動作しない原因:

pattern="[00-99]{2}\.[00-12]{2}\.[00-31]{2}-[000-999]{3}\.[00-99]{2}" 
+0

文字グループは簡略化することができ、月および日には間違っていることに注意してください。例えば、月は '[0-2]'の数字だけを許可しますので、3月から9月はありません。 – jeroen

+0

あなたのご意見ありがとうございますが、悲しいことに、これは私にとってはうまくいかないようです。エラーなしで入力が可能です。とにかく私はそれがなぜあるかを確認することができますか? – user5740843

+0

@ user5740843 "ありがとう、ここにdownvoteです"。それは素晴らしいことです....とにかく、もう一つの問題はあなたが ' - 'を逃れたことでした。私はそれに応じて私の答えを更新しました – PierreDuc

1

の文字グループは、正規表現での作業[...]どのようにあなたが誤解:彼らはあなたがそれらを使用する場合、あなたが入力し、それらを繰り返す必要としませんことができるように文字を定義月や日の場合は、高い数字が必要ですが、たとえば09(9月か9月の9日)を入力することもできません。私も+数量を削除した

[0-9]{2}\.[0-9]{2}\.[0-9]{2}-[0-9]{3}\.[0-9]{2} 

注意をし、それが文字グループ内の唯一の特殊文字があるように私は-をエスケープいない午前:

は、だからあなたが必要です。しかし、それはこれらの有無にかかわらず動作します。

これはhereです。

+0

あなたは私の答えです。エラーなく、彼のケースを完全に満足させるわけではない。あなたの問題は、月> 12と日付> 31も許すということです。明らかに、正規の日付正規表現はここでは良いでしょう。正規表現は 'regex101'の内部で動作しますが、' html'はより厳密な構文を使用します。 – PierreDuc

+0

@PierreDuc私は個人的には、おそらく別のdatepickerと数字入力を行い、サーバー側で実際の検証を行います。 – jeroen

関連する問題