2017-09-25 47 views
1

我有一個可選的表單字段,我想使用新的html5模式選項。 但是,當我添加模式時,即使我沒有必需的屬性,字段也是必需的。我已經包含了下面的模式。我希望用戶能夠將字段留空,但如果用戶在字段中輸入了某些內容,那麼我希望應用該模式。我怎麼做到這一點?提前致謝。html5表單驗證 - 在可選字段上使用模式

pattern="[-a-zA-Z '.,]{3,50}" 

回答

1

的問題是,{3,50}限制性量詞至少需要3次出現在字符類中定義的字符的。

您需要使模式可選。與可選的非捕獲組包裹它:

pattern="(?:[-a-zA-Z '.,]{3,50})?" 
     ^^^     ^^ 

HTML5 patterns自動卷繞有錨固件,即,圖案上方將被翻譯成^(?:(?:[-a-zA-Z '.,]{3,50})?)$和將匹配

  • ^(?: - 字符串
  • 的開始
  • (?:[-a-zA-Z '.,]{3,50})? - 發生1或0次3至50個連字符,ASCII字母,空格,',.,
  • )$ - 字符串結尾。
+0

令人驚歎。謝謝。你是HTML5天才。我通過刪除前面的「:」來簡化它。而我在上面的模式中沒有看到字符串的結尾。簡化版本工作。是否有一個原因,我需要一個字符串的開始和字符串的結尾? –

+0

@XiVix:查看[文檔](https://www.w3.org/TR/html5/single-page.html#the-pattern-attribute)。你在'pattern'屬性*中使用的模式必須匹配整個字符串,因此前導/尾隨位置中的'^'和'$'不是必需的。這就是爲什麼我沒有把它們納入模式。 –