Tie*_*eme 1 regex validation cocoa-touch
我正在寻找一个正则表达式来验证用户名.
用户名可能包含:
"!@#$%^&*.:;<>?/\|{}[]_+=-",但一次只有1个编辑:
对困惑感到抱歉
而不是编写一个大的正则表达式,编写单独的正则表达式来测试每个期望的条件会更清楚.
测试用户名是否包含字母,数字,ASCII符号!通过@和空间:^(\p{L}|\p{N}|[!-@]| )+$.这必须匹配用户名才有效.请注意\p{L}Unicode字母的\p{N}类的使用和Unicode数字的类.
测试用户名是否包含连续的空格:\s\s+.如果匹配,则用户名无效.
测试符号是否连续出现:[!-@][!-@]+.如果匹配,则用户名无效.
这完全符合您的标准.
但是,根据用户名的编写方式,这种方法可能仍会拒绝完全有效的名称,如"Éponine".这是因为"É"可以写成U + 00C9 LATIN CAPITAL E WITH ACUTE(匹配\p{L})或类似的E后跟U + 02CA MODIFIER LETTER ACUTE ACCENT(不匹配\p{L}).
同样,"字符"实际上意味着"Unicode代码点".\ p {L}匹配"字母"类别中的单个代码点.如果您的输入字符串是à编码为U + 0061 U + 0300,则它匹配没有重音的a.如果输入为à编码为U + 00E0,则它与重音符号相匹配.原因是代码点U + 0061(a)和U + 00E0(à)都在"字母"类别中,而U + 0300在"标记"类别中.
Unicode是多毛的,并且限制用户名中的字符无论如何都不一定是个好主意.你确定你要这么做吗?
| 归档时间: |
|
| 查看次数: |
873 次 |
| 最近记录: |