我试图验证将用作子域的用户输入字符串.规定如下:
>长度在1到63个字符之间(我从Google Chrome中显示的角色数量取63个子域,不知道它是否实际上是一个服务器指令.如果您对有效的最大长度有更好的建议,我有兴趣听到它)
>可能包含a-zA-Z0-9,连字符,下划线
>不能以连字符或下划线开始或结尾
编辑:从下面的输入,我添加了以下内容:
4.不应包含连续的连字符或下划线.
例子:
a => valid 0 => valid - => not valid _ => not valid a- => not valid -a => not valid a_ => not valid _a => not valid aa => valid aaa => valid a-a-a => valid 0-a => valid a&a => not valid a-_0 => not valid a--a => not valid aaa- => not valid
我的问题是我不知道如何使用RegEx指定字符串只允许一个字符,同时也指定它可能不以连字符或下划线开头或结尾.
谢谢!
解决方法
你不能在正确的子域中有下划线,但是你需要它们吗?修剪你的输入后,做一个简单的字符串长度检查,然后用这个测试:
/^[a-z\d]+(-[a-z\d]+)*$/i
以上所述,您不会得到连续的字符,例如a-bbb-ccc通过和失败.
/^[a-z\d]+([-_][a-z\d]+)*$/i
将允许非连续的下划线.