如何用正则匹配命令词及其子串以适配HTML5输入验证?
解决HTML5输入框正则匹配命令前缀的问题
要让create、load、update、delete、draw这几个命令的所有前缀子串(比如create的c/cr/cre…直到完整的create)都能通过HTML5输入框的正则验证,同时保持大小写不敏感(因HTML5不支持/i标志),可以通过为每个命令构建逐步可选的字符组来实现。
最终正则表达式
^([Cc]([Rr]([Ee]([Aa]([Tt]([Ee])?)?)?)?|[Ll]([Oo]([Aa]([Dd])?)?)?|[Uu]([Pp]([Dd]([Aa]([Tt]([Ee])?)?)?)?)?|[Dd]([Ee]([Ll]([Ee]([Tt]([Ee])?)?)?)?|[Rr]([Aa]([Ww])?)?))$
逻辑解释
每个命令都被拆分成从首字符开始,后续每个字符可选的嵌套结构,这样就能匹配从单个首字符到完整命令的所有前缀:
- 针对
create:[Cc]([Rr]([Ee]([Aa]([Tt]([Ee])?)?)?)?—— 允许输入C/c、Cr/cR/CR/cr、Cre/…直到完整的Create/CREATE等任意大小写组合的前缀 - 针对
load:[Ll]([Oo]([Aa]([Dd])?)?)?—— 允许输入L/l、Lo/…直到Load等前缀 - 针对
update:[Uu]([Pp]([Dd]([Aa]([Tt]([Ee])?)?)?)?)?—— 对应所有U/u开头的前缀 - 针对
delete和draw:因为两者首字符都是D/d,所以合并到同一个[Dd]分支下,分别处理后续可选字符
这种写法既满足了大小写不敏感的要求,又能让每个命令的所有前缀子串都通过验证,不会触发HTML5的输入提示。
内容的提问来源于stack exchange,提问作者zwoolli
相关产品推荐
相关产品推荐

