原创作者: 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 条 请登录后发表评论