我正在尝试为html5输入创建一个只应包含有效文件夹名称的正则表达式。
为了支持各种各样的文件系统,我想过只允许:
现在我的正则表达式如下:
[a-zA-Z0-9][a-zA-Z0-9 ]{0,254}[a-zA-Z0-9]?
问题最终是一个问题,因为如果没有给出结束字符,那么最后会允许空格。
但是如果我把它留下来,我需要添加至少2个字符。
如果我将?
添加到第一个模式,则会出现类似问题。
现在我被卡住了。我可以在没有255的字符限制的情况下完成它,但是随之而来的一切都崩溃了。
答案 0 :(得分:6)
答案 1 :(得分:3)
您需要在开始时添加^,在结束时添加$,然后您的正则表达式需要匹配整个测试行。否则它可以匹配100000中的255个字符,它仍然会通过。
答案 2 :(得分:1)
您可以使用
^[a-zA-Z0-9]$|^[a-zA-Z0-9][a-zA-Z0-9 ]{0,253}[a-zA-Z0-9]$
第一个选项处理单个字符大小写,第二个选项处理2-255个字符大小写。
答案 3 :(得分:0)
你可以使用这个正则表达式用负向前瞻:
^[a-zA-Z0-9](?!.* $)[a-zA-Z0-9 ]{0,254}$
RegEx详细信息:
^
:开始[a-zA-Z0-9]
:匹配开头的字母数字字符(?!.* $)
:当最后一个字符是空格时判断失败的否定前瞻[a-zA-Z0-9 ]{0,254}
:将0与254
字母数字或空格字符匹配$
:结束