【发布时间】:2017-09-07 20:52:20
【问题描述】:
我正在尝试为仅应包含有效文件夹名称的 html5 输入创建正则表达式。
为了支持多种文件系统,我考虑过只允许:
- a-Z 和 0-9 之间的最小长度为 1 个字符
- 中间允许空格,但开头或结尾不允许空格
- 最多允许 255 个字符
现在我的正则表达式看起来像这样:
[a-zA-Z0-9][a-zA-Z0-9 ]{0,254}[a-zA-Z0-9]?
最后的问号是个问题,因为如果没有给出结束字符,那将允许最后有空格。
但是,如果我忽略它,我需要添加至少 2 个字符。
如果我将? 添加到第一个模式,则会出现类似的问题。
现在我被困住了。我可以在没有 255 字符限制的情况下做到这一点,但有了它,一切都崩溃了。
【问题讨论】:
-
为什么不在
()中将中间组和尾组一起括起来,并用?使其成为可选,那么第一组始终是必需的,而最后一组只需要与中间组一起使用。 -
啊,这么近,又这么远 :) - 还需要 {0, 253} 才能永远不超过 255 个字符,对吧? (或者我的数学也坏了?)
-
正确答案是
[a-zA-Z0-9](?:[a-zA-Z0-9 ]{0,253}[a-zA-Z0-9])?:HTML5 属性在幕后自动锚定模式,?量词应应用于原始正则表达式中的第 2 和第 3 个原子组。
标签: javascript regex html