1
我有一個可選的表單字段,我想使用新的html5模式選項。 但是,當我添加模式時,即使我沒有必需的屬性,字段也是必需的。我已經包含了下面的模式。我希望用戶能夠將字段留空,但如果用戶在字段中輸入了某些內容,那麼我希望應用該模式。我怎麼做到這一點?提前致謝。html5表單驗證 - 在可選字段上使用模式
pattern="[-a-zA-Z '.,]{3,50}"
我有一個可選的表單字段,我想使用新的html5模式選項。 但是,當我添加模式時,即使我沒有必需的屬性,字段也是必需的。我已經包含了下面的模式。我希望用戶能夠將字段留空,但如果用戶在字段中輸入了某些內容,那麼我希望應用該模式。我怎麼做到這一點?提前致謝。html5表單驗證 - 在可選字段上使用模式
pattern="[-a-zA-Z '.,]{3,50}"
的問題是,{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字母,空格,'
,.
或,
)$
- 字符串結尾。
令人驚歎。謝謝。你是HTML5天才。我通過刪除前面的「:」來簡化它。而我在上面的模式中沒有看到字符串的結尾。簡化版本工作。是否有一個原因,我需要一個字符串的開始和字符串的結尾? –
@XiVix:查看[文檔](https://www.w3.org/TR/html5/single-page.html#the-pattern-attribute)。你在'pattern'屬性*中使用的模式必須匹配整個字符串,因此前導/尾隨位置中的'^'和'$'不是必需的。這就是爲什麼我沒有把它們納入模式。 –