【发布时间】:2015-08-12 19:20:20
【问题描述】:
所有, 我正在尝试构造一个正则表达式(我将用于测试有效的用户名):
^[(0-9)|(_|\.)]|^[0-9]+$|[^a-zA-z0-9_.]{3,}|(_\.|\._)|\.{2,}|_{2,}
并针对此字符串对其进行测试:
1123@sssssasdf sslkdf*.sf...____.__sfsfdddddsss
这个正则表达式应该测试的是:
- 字符串不应以数字、下划线或点开头
- 字符串应该是字母数字
- 不应包含重复三次或更多次的字符——这会失败
- 不得同时包含下划线和点
- 不应同时包含点和下划线
- 不应包含重复的点不应包含重复的下划线
看起来所有案例都匹配但第 3 个。它不会捕获重复三次或更多次的重复字符。
我的问题是:
- 如何修复这个正则表达式,以便它可以捕获重复的字符?
- 如何优化这个正则表达式?
提前致谢
编辑 根据要求,有效字符串是:
- 约翰
- john.snow
- john.snow123
- john1.snow1
- john_snow
- john_snow123
- john1_snow1
无效的字符串是:
- 123
- 1john.snow
- .john_snow
- john__snow
- 约翰..雪
- jjjohn.snow
- _john_snow
【问题讨论】:
标签: regex