D语言的正则表达式例子
Java代码
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.");
}
更多信息请登陆http://61.191.27.74:802/ 最后,欢迎加入http://61.191.27.74:802/的会员
安徽新华电脑学校专业职业规划师为你提供更多帮助【在线咨询】