【问题标题】:Html5 input patternHtml5 输入模式
【发布时间】:2015-10-06 12:50:03
【问题描述】:
我从一些在线生成器获得了这种模式.*?[a-z]([a-z])([a-z])([a-z]).*?(\s+)(\d+),但它不起作用。
我需要允许的模式:
“最少 3 个字符长度的字符串,下一个空格,下一个最少 1 个字符的整数” [abc 1] 或相同但顺序不同的“最少 1 个字符的整数,下一个空格,下一个最少 3 个字符长度的字符串” [3 gtf]。
谢谢。
【问题讨论】:
标签:
regex
html
html5-validation
【解决方案1】:
试试这个:
\d+\s\w{3,}|\w{3,}\s\d+
它要么匹配:
- 一个或多个数字 (
\d+),后跟一个空格 (\s),后跟三个或更多单词字符 (\w{3,})(这是 [a-zA-Z0-9],您如果您愿意,可以将此部分替换为 [a-zA-Z]。
- 三个或更多单词字符(这是 [a-zA-Z0-9],如果您愿意,可以将此部分替换为 [a-zA-Z]),后跟一个空格,然后是一个或更多位数。
Regex101
【解决方案2】:
下面的表达式应该符合你的描述:
[a-z]{3,}\s\d+|\d+\s[a-z]{3,}
一些注意事项:
{3,} 构造允许您指定给定范围内的重复。一般来说,它是{min,max},但您可以省略 min 或(如这里) max 以获得一个开放式范围。您还可以通过指定单个数字来指定精确的重复次数,例如{99}.
表达式本质上是两个完整的表达式,交替切换。正则表达式不允许你说“正是这些事情,以任何顺序”。
我已经使用[a-z] 来匹配非数字部分中的字符,正如您在原始示例中所做的那样。