(编辑:什么是代码高尔夫:代码高尔夫是挑战,解决一个特定的问题,以最少的代码字符计数,无论你喜欢哪种语言。
More info here on Meta StackOverflow。)
电子邮件地址验证,但没有正则表达式(或类似的解析库)当然。这不是电子邮件地址,而是您可以编写下面给出的不同字符串操作和约束的时间。
规则如下(是的,我知道,这不符合RFC规定,但这些将是这个挑战的5个规则):
> @之前至少有1个字符@:
A-Z,a-z,0-9,. (period),_ (underscore)
> @必须存在,只有一次
john@smith.com ^
> Period(。)必须一直存在@
john@smith.com ^
> @和以下之间至少有1个[A-Z,a-z]字符。 (期)
john@s.com ^
>最后只有2个[A-Z,a-z]字符。期
john@smith.ab ^^
请仅发布方法/函数,这将需要一个字符串(提议的电子邮件地址),然后根据电子邮件地址有效(true)或无效(false)返回布尔值结果(true / false)。
Samples: b@w.org (valid/true) @w.org (invalid/false) b@c@d.org (invalid/false) test@org (invalid/false) test@%.org (invalid/false) s%p@m.org (invalid/false) j_r@x.c.il (invalid/false) j_r@x.mil (valid/true) r..t@x.tw (valid/true) foo@a%.com (invalid/false)
祝你好运!
C89(166个字符)
#define B(c)isalnum(c)|c==46|c==95 #define C(x)if(!v|*i++-x)return!1; #define D(x)for(v=0;x(*i);++i)++v; v;e(char*i){D(B)C(64)D(isalpha)C(46)D(isalpha)return!*i&v>1;}
不重入,但可以多次运行。测试床:
#include<stdio.h> #include<assert.h> main(){ assert(e("b@w.org")); assert(e("r..t@x.tw")); assert(e("j_r@x.mil")); assert(!e("b@c@d.org")); assert(!e("test@%.org")); assert(!e("j_r@x.c.il")); assert(!e("@w.org")); assert(!e("test@org")); assert(!e("s%p@m.org")); assert(!e("foo@a%.com")); puts("success!"); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。