gsr*_*gsr 10 ruby regex subdomain ruby-on-rails ruby-on-rails-3
我正在尝试验证将用作子域的用户输入字符串.规则如下:
编辑:从下面的输入,我添加了以下内容: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
Run Code Online (Sandbox Code Playgroud)
我的问题是我不知道如何用RegEx指定字符串只允许一个字符,同时还指定它不能以连字符或下划线开头或结尾.
谢谢!
Wal*_*alf 18
您 不能 可以有下划线 正确子域名,但你需要它们吗?在trim输入之后,进行简单的字符串长度检查,然后使用以下方法进行测试:
/^[a-z\d]+(-[a-z\d]+)*$/i
Run Code Online (Sandbox Code Playgroud)
有了上述内容,您将无法获得连续的-字符,例如a-bbb-ccc传递和a--d失败.
/^[a-z\d]+([-_][a-z\d]+)*$/i
Run Code Online (Sandbox Code Playgroud)
也将允许非连续的下划线.
更新:您会发现,在实践中,不允许使用下划线,并且所有子域必须以字母开头.上述解决方案不允许国际化子域(punycode).你最好使用它
/\A([a-z][a-z\d]*(-[a-z\d]+)*|xn--[\-a-z\d]+)\z/i
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5502 次 |
| 最近记录: |