【问题标题】:Pattern regex in HTML5 prevent white space?HTML5 中的模式正则表达式可以防止空格?
【发布时间】:2017-08-02 13:11:19
【问题描述】:

我有两个不同领域的正则表达式。两者都将评估正确的值,但它们都不会阻止用户输入空格。例如,在性别字段中,用户可以简单地输入空白并提交表单。我想阻止用户输入空白。这是我的正则表达式:

Gender pattern="*[MmFf]?*"  #This field should allow M or F letter lower or upper case. Nothing else should be allowed. This field is 1 character only.

Grade pattern=" *(0?[0-9]|1[0-2]|[A-Z]{1,2})? *" #This should allow 01 or 1 and something like this PK or pk. No white space.

我不确定如何防止 HTML5 模式中的空白。如果有人知道如何解决这个问题,请告诉我。谢谢。

【问题讨论】:

标签: regex html validation


【解决方案1】:

您的模式允许使用空格 ( *) 或空字符串。让模式至少匹配一些东西:

  • 性别pattern="[MmFf]"
  • 等级pattern="0?[0-9]|1[0-2]|[A-Za-z]{1,2}"

请注意,HTML5 模式不需要显式的 ^$ 锚点(除非某些不寻常的框架覆盖了 HTML5 的 pattern 行为)。

因此,第一个模式将被转换为^(?:[MmFf])$ 模式,并且只会匹配等于MmFf 的字符串。

第二个会被翻译成^(?:0?[0-9]|1[0-2]|[A-Za-z]{1,2})$,会匹配一个字符串(需要全字符串匹配)

  • 0?[0-9] - 一个可选的0,后跟一个数字
  • | - 或
  • 1[0-2] - 101112
  • | - 或
  • [A-Za-z]{1,2} - 1 或 2 个大写或小写 ASCII 字母

【讨论】:

  • 如何在这种组合中允许 [A-Z]{1,2} - 1 或 2 个大写 ASCII 字母小写?
  • @espresso_coffee 只需将a-z 添加到字符类即可。
  • 该部分与常规正则表达式相同。非常感谢您的帮助!
  • pattern="[a-zA-Z][A-Za-z' .,-]{0,29}$" 这应该允许带有特殊字符的大写小写字母 .,' -并且不超过 30 个包机,但同时不能为空。看起来对吗?
  • 如果你的意思是它应该以字母开头,那么是的,pattern="[a-zA-Z][A-Za-z' .,-]{0,29}" 是可以的。它还允许a-"A "(末尾有空格)。
猜你喜欢
  • 2011-02-20
  • 2016-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
相关资源
最近更新 更多