gpt4 book ai didi

code-golf - Code Golf : Email Address Validation without Regular Expressions

转载 作者:行者123 更新时间:2023-12-03 13:39:24 24 4
gpt4 key购买 nike

锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或交互。








(编辑:什么是 Code Golf:Code Golf 是用您喜欢的任何语言的字符数以最少的代码量解决特定问题的挑战。More info here 在 Meta StackOverflow 上。)

Code Golfers,这是字符串操作的挑战。

电子邮件地址验证 ,但当然没有正则表达式(或类似的解析库)。与其说是电子邮件地址,不如说是您可以编写多短的不同字符串操作和下面给出的约束。

规则如下(是的,我知道,这不符合 RFC,但这些将是本次挑战的 5 条规则):

  • 该组中至少有 1 个字符位于 @ 之前:
    A-Z, a-z, 0-9, . (period), _ (underscore)
  • @ 必须存在,只存在一次
    john@smith.com
    ^
  • 句点 (.) 必须在 @ 之后恰好存在一次
    john@smith.com
    ^
  • 至少 1 个 仅 [A-Z, a-z] @ 和以下之间的字符。 (时期)
    john@s.com
    ^
  • 至少 2 个 仅 [A-Z, a-z] 最后的字符。时期
    john@smith.ab
    ^^

  • 请仅发布方法/函数,它将采用字符串(建议的电子邮件地址),然后根据电子邮件地址有效(真)或无效(假)返回 bool 结果(真/假)。
    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!");
    }

    关于code-golf - Code Golf : Email Address Validation without Regular Expressions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1390296/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com