RegEx - 1到10个字母数字空间好的

时间:2014-06-24 20:29:24

标签: regex spaces alphanumeric variable-length

正则表达式的新功能。提前谢谢!

需要验证字段是1-10个大小写的字母数字和空格是允许的。第一个字符必须是字母数字,而不是空格。

好示例:

"拉里金"

" L King1"

" 1larryking"

" L"

错误示例:

"拉里·金"

这就是我所拥有的,只要数据正好是10个字符,它就能正常工作。问题是它不允许少于10个字符。

[0-9a-zA-Z] [0-9a-zA-Z] [0-9a-zA-Z] [0-9a-zA-Z] [0-9a-zA-Z] [0 -9a-zA-Z] [0-9a-zA-Z] [0-9a-zA-Z] [0-9a-zA-Z] [0-9a-zA-Z]

我已经阅读并尝试了很多不同的东西,但我只是没有得到它。

谢谢,

贾斯汀

7 个答案:

答案 0 :(得分:1)

我不知道你在使用什么环境以及什么引擎。所以我假设P​​CRE(通常用于PHP)

这个小正则表达式确实符合您的要求:^(?i)(?!\s)[a-z\d ]{1,10}$

发生了什么事?

  • ^标记字符串的开头(如果表达式与整个字符串不匹配,则将其删除)
  • (?i)告诉引擎不区分大小写,因此不需要在后面的表达式中写入所有字母大小写
  • (?!\s)确保以下字符不会是白色空格(\s)(这是所谓的负向前瞻)
  • [a-z\d ]{1,10}匹配任意一个字母(a-z),任何数字(\d)和空格()连续最少1次和最多10次出现({ {1}})
  • 最后的{1,10}标记字符串的结尾(如果表达式不能与整个字符串匹配,则将其删除)

这里还有一个小的可视化,以便更好地理解。

Regular expression visualization

Debuggex Demo

答案 1 :(得分:0)

试试这个:[0-9a-zA-Z][0-9a-zA-Z ]{0,9}

{x,y}语法意味着在xy次之间。 {x,}至少意味着x次。

答案 2 :(得分:0)

你想要这样的东西。

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

第一部分确保它是字母数字。第二部分使用空格获得您的字母数字。 {0,9}允许从第二部分的0到9次出现。这将给你的1-10

答案 3 :(得分:0)

试试这个:^[(^\s)a-zA-Z0-9][a-z0-9A-Z ]*

不是第一个字符的空格和字母数字,而是零个或多个字母数字字符。它不会限制为10个字符,但它适用于任何1-10个字符的集合。

答案 4 :(得分:0)

以下可能在语义上最正确:

(?=^[0-9a-zA-Z])(?=.*[0-9a-zA-Z]$)^[0-9a-zA-Z ]{1,10}$

它断言第一个和最后一个字符是字母数字,整个字符串的长度是1到10个字符(包括空格)。

答案 5 :(得分:0)

我认为最简单的方法是使用\w[\s\w]{0,9}

请注意\w适用于[A-Za-z0-9_],如果您不想[A-Za-z0-9],请将其替换为_ 请注意,\s适用于任何白色字符,因此如果您不想要其他字符,请将其替换为

答案 6 :(得分:0)

我认为最后也不允许这个空间。

^[a-zA-Z0-9](?:[a-zA-Z0-9 ]{0,8}[a-zA-Z0-9])?$

或使用posix字符类:

^[[:alnum:]](?:[[:alnum:] ]{0,8}[[:alnum:]])?$