原创作者: ideage   阅读:1194次   评论:0条   更新时间:2011-05-26    
部分内容来自wiki4D.
module regexp;

import std.stdio : writefln;
import std.regexp;
import std.c.stdio;

bool isalpha(char[] c)
{
    RegExp myRegExp;
    myRegExp = new RegExp("^[a-zA-Z_]+$", "");
    return cast(bool) myRegExp.test(c);
}

bool isspace(char[] c)
{
     /* true if c is whitespace, false otherwise */

    RegExp myRegExp = new RegExp("^\\s+$", "");
    return cast(bool) myRegExp.test(c);
}

bool isdigit(char[] c)
/* true if c is a decimal digit, false otherwise */
{
    RegExp myRegExp = new RegExp("^\\d+$", "");
    return cast(bool) myRegExp.test(c);
}

bool ishexdigit(char[] c)
/* true if c is a hexadecimal digit, false otherwise */
{
    RegExp myRegExp = new RegExp("^[0-9A-F]+$", "");
    /* If it were D code, "_" would also be valid */

    return cast(bit) myRegExp.test(c);
}

bool isoctdigit(char[] c)
/* true if c is an octal digit, false otherwise */
{
    RegExp myRegExp = new RegExp("^[0-7]+$", "");
    return cast(bool) myRegExp.test(c);
}

bool issymbol(char[] c)
/* true if c is legal SQL symbol, false otherwise */
{
    RegExp myRegExp = new RegExp("^[\\(\\)\\[\\]\\.,;=<>\\+\\-\\*/&\\^]+$", "");
    return cast(bool) myRegExp.test(c);
}

bool isDate(char[] c)
/* true if c is a date, false otherwise */
{
    RegExp myRegExp = new RegExp("((((19){1}|(20){1})d{2})|d{2})[01]{1}d{1}[0-3]{1}d{1}", ""); //1900
    return cast(bool) myRegExp.test(c);
}

bool isChinese(char[] c)
/* true if c is a chinese string, false otherwise */
{
    RegExp myRegExp = new RegExp("^[\u4e00-\u9fa5]+$", "");
    return cast(bool) myRegExp.test(c);
}

bool iscnPhone(char[] c)
/* true if c is a china phone code, false otherwise */
{
    RegExp myRegExp = new RegExp("\\d{3}-\\d{8}|\\d{4}-\\d{7}", "g");
    return cast(bool) myRegExp.test(c);
}

bool iscnMobile(char[] c)
/* true if c is a china Mobile code, false otherwise */
{
    RegExp myRegExp = new RegExp("^((\\(\\d{2,3}\\))|(\\d{3}\\-))?13\\d{9}$", "");
    return cast(bool) myRegExp.test(c);
}

bool iscnZip(char[] c)
/* true if c is a china ZIP, false otherwise */
{
    RegExp myRegExp = new RegExp("^[0-9]\\d{5}$", "");
    return cast(bool) myRegExp.test(c);
}

bool iscnIDcard(char[] c)
/* true if c is a china ID card, false otherwise */
{
    RegExp myRegExp = new RegExp("\\d{15}|\\d{18}", "");
    return cast(bool) myRegExp.test(c);
}

unittest
{
    /* compile with the -unittest flag to run these tests */

    writefln("Testing functions...");

    assert(isalpha("a") && isalpha("A") && !isalpha("9") && isalpha("_") && isalpha("R") && !isalpha("&"));

    assert(issymbol("(") && issymbol(")") && issymbol("[") && issymbol("]") && issymbol(")") &&
      issymbol("[") && issymbol("]") && issymbol("-") && issymbol("/") && issymbol("=") && issymbol("*") &&
      issymbol(".") && !issymbol("a") && !issymbol("0") && !issymbol("Y") && !issymbol("\\"));

    assert(isdigit("0") && isdigit("7") && isdigit("9") && !isdigit("A")  && !isdigit("^") && !isdigit("G"));

    assert(ishexdigit("0") && ishexdigit("7") && ishexdigit("A")  && !ishexdigit("^") && !ishexdigit("G"));

    assert(isoctdigit("0") && isoctdigit("7") && !isoctdigit("8")  && !isoctdigit("A")  && !isoctdigit("^"));

    assert(isspace(" ")  && isspace("\t") && !isspace("o")  && !isspace(".")  && !isspace("5"));

    assert(isChinese("中文")  && isChinese("哦") && !isChinese("*.")  && !isChinese("abcd")  && !isChinese("5"));

		assert(iscnPhone("010-12345678")  && iscnPhone("0710-1234567") && !iscnPhone("01-12345")  && !iscnPhone("010-12")  && !iscnPhone("0314-123456") && iscnPhone("0314-12345678-90")&& iscnPhone("0314-12345678-901") && iscnPhone("012345-12345678-901") );

		assert(iscnMobile("13123456789")&& !iscnMobile("139123456789") && !iscnMobile("*.")  && !iscnMobile("abcd")  && !iscnMobile("5")  );

		assert(iscnZip("100081")&& iscnZip("012346") && !iscnZip("*.")  && !iscnZip("abcd")  && !iscnZip("5")  );


    writefln("Functions tested successfully.");
}

void main()
{
    /* Compile with the -debug flag for this statement to run. */

    debug writefln("Main Program.");

}



评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

文章信息

  • qiezi在2007-03-14创建
  • qiezi在2011-05-26更新
Global site tag (gtag.js) - Google Analytics