【发布时间】:2013-07-29 23:43:48
【问题描述】:
我想拒绝包含最少 4 个字符、最多 39 个字符、包含 a-z、A-Z、0-9、-、_、@ 和 的用户名或密码字符串。并且字符应该是不重复和不递增的,例如“aaaa”或“1234”或“abcd”以及 URL (HTTP-POST) 友好。
我一直在尝试调查String.matches()。
这部分最少 4 个字符,最多 39 个字符,包含 a-z、A-Z、0-9 似乎并不难,但有没有办法在符合所有这些要求的匹配项上测试字符串?
【问题讨论】:
-
我建议使用正则表达式来验证长度和允许的字符,然后使用自定义 Java 函数扫描重复或递增字符,如果输入通过正则表达式。正则表达式无法识别递增字符,除非列出所有可能的带有递增字符的字符串。
-
“URL (HTTP-POST) 友好”是什么意思?这不只是基于您已经列出的允许的字符吗?无论如何,最好不要基于 URL 友好性来限制用户名,而是在生成 URL 之前调用 URL 编码函数(将特殊字符更改为
%xx等实体),并在解释时调用 URL 解码函数网址。 -
你不能做那种非增量的事情。正则表达式不适合。
标签: android regex string character