正则表达式的新功能。提前谢谢!
需要验证字段是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]
我已经阅读并尝试了很多不同的东西,但我只是没有得到它。
谢谢,
贾斯汀
答案 0 :(得分:1)
我不知道你在使用什么环境以及什么引擎。所以我假设PCRE(通常用于PHP)
这个小正则表达式确实符合您的要求:^(?i)(?!\s)[a-z\d ]{1,10}$
发生了什么事?
^
标记字符串的开头(如果表达式与整个字符串不匹配,则将其删除)(?i)
告诉引擎不区分大小写,因此不需要在后面的表达式中写入所有字母大小写(?!\s)
确保以下字符不会是白色空格(\s
)(这是所谓的负向前瞻)[a-z\d ]{1,10}
匹配任意一个字母(a-z
),任何数字(\d
)和空格(
)连续最少1次和最多10次出现({ {1}}){1,10}
标记字符串的结尾(如果表达式不能与整个字符串匹配,则将其删除)这里还有一个小的可视化,以便更好地理解。
答案 1 :(得分:0)
试试这个:[0-9a-zA-Z][0-9a-zA-Z ]{0,9}
{x,y}
语法意味着在x
和y
次之间。 {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:]])?$