加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

代码高尔夫 – 代码高尔夫:没有正则表达式的电子邮件地址验证

发布时间:2020-12-14 06:34:20 所属栏目:百科 来源:网络整理
导读:(编辑:什么是代码高尔夫:代码高尔夫是挑战,解决一个特定的问题,以最少的代码字符计数,无论你喜欢哪种语言。 More info here on Meta StackOverflow。) 代码高尔夫球手,这是一个字符串操作的挑战。 电子邮件地址验证,但没有正则表达式(或类似的解析库)
(编辑:什么是代码高尔夫:代码高尔夫是挑战,解决一个特定的问题,以最少的代码字符计数,无论你喜欢哪种语言。 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!");
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读