正则表达式 - 最多255个字符,开始和结束时没有空格,

时间:2017-09-07 20:52:20

标签: javascript regex html5

我正在尝试为html5输入创建一个只应包含有效文件夹名称的正则表达式。

为了支持各种各样的文件系统,我想过只允许:

  1. 最小长度为a-Z和0-9
  2. 之间的1个字符
  3. 允许中间空格,但不允许在开头或结尾
  4. 允许最多255个字符
  5. 现在我的正则表达式如下:

    [a-zA-Z0-9][a-zA-Z0-9 ]{0,254}[a-zA-Z0-9]?
    

    问题最终是一个问题,因为如果没有给出结束字符,那么最后会允许空格。

    但是如果我把它留下来,我需要添加至少2个字符。 如果我将?添加到第一个模式,则会出现类似问题。

    现在我被卡住了。我可以在没有255的字符限制的情况下完成它,但是随之而来的一切都崩溃了。

4 个答案:

答案 0 :(得分:6)

/^\b[A-Z\d ]{1,255}\b$/i

HTML5输入检查:pattern="\b[A-Za-z\d ]{1,255}\b"

答案 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 Demo

RegEx详细信息:

  • ^:开始
  • [a-zA-Z0-9]:匹配开头的字母数字字符
  • (?!.* $):当最后一个字符是空格时判断失败的否定前瞻
  • [a-zA-Z0-9 ]{0,254}:将0与254字母数字或空格字符匹配
  • $:结束