当前位置:首页 > 网站旧栏目 > 学习园地 > 设计软件教程 > D语言的正则表达式例子

D语言的正则表达式例子
2010-01-13 21:14:07  作者:  来源:

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/的会员


安徽新华电脑学校专业职业规划师为你提供更多帮助【在线咨询