`
ideage
  • 浏览: 326697 次
社区版块
存档分类
最新评论

D语言的正则表达式例子

阅读更多
部分内容来自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.");

}



分享到:
评论

相关推荐

    正则表达式例子大全

    本文件提供了多个正则表达式的例子,涉及验证数字、字符、电子邮件、URL、电话号码等多个方面,体现了正则表达式在不同场景下的应用。以下是一些具体的应用实例及其解释: 1. 验证数字的正则表达式集: - 验证数字...

    java正则表达式使用例子

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许我们通过模式匹配来查找、替换或分割文本。在Android开发中,正则表达式尤其重要,因为它们可以帮助我们验证用户输入、处理文本数据或者进行复杂的...

    第11.25节 Python正则表达式编译re.compile及正则对象使用.rar

    在Python编程语言中,正则表达式是一种强大的文本处理工具,用于匹配、查找、替换等操作。本节将深入探讨`re.compile()`函数及其在创建正则表达式对象中的应用。`re.compile()`是Python标准库`re`模块中的一员,它...

    精通正则表达式中文版英文版_中文版为扫描版

    书中的例子涵盖了多种编程语言,如Perl、Java、JavaScript、.NET等,这些语言的正则表达式引擎虽然大同小异,但在细节上有所区别,学习者将了解到如何在不同环境下应用正则表达式。 对于初学者,书中会引导他们理解...

    JAVA正则表达式大全

    在Java编程语言中,正则表达式被广泛应用于数据验证、文本提取和字符串操作。以下是对这些文档标题所涉及的Java正则表达式知识点的详细解释: 1. **正则表达式之道** 这个主题可能涵盖了正则表达式的基础概念,...

    正则表达式例子 str_replace

    正则表达式的组合可以非常复杂,例如,`\d{3}-\d{4}` 可以匹配美国电话号码格式的字符串,`\b[A-Z][a-z]+\b` 可以匹配首字母大写的英文单词。 在PHP中,我们通常使用`preg_match`、`preg_replace`和`preg_split`等...

    java_zhengze.rar_正则表达式_正则表达式 java

    正则表达式是编程语言中用于模式匹配和字符串处理的强大工具,在Java中也不例外。Java的正则表达式功能强大,可以用于验证输入、提取信息、替换文本等多种场景。本资料"java_zhengze.rar"提供了对Java正则表达式的...

    Java根据正则表达式生成字符串—Xeger,automaton

    在Java编程语言中,处理字符串和正则表达式是一项常见的任务。正则表达式是一种强大的文本模式匹配工具,可以用于搜索、替换或者提取符合特定规则的字符串。在本篇文章中,我们将深入探讨如何利用Java中的Xeger和...

    正则表达式.txt,正则表达式.txt

    在编程语言中,几乎所有现代语言都支持正则表达式的使用,例如 Java、Python、JavaScript 等。此外,在日常工作中使用的工具如 grep、sed 和 awk 等也支持正则表达式的操作。 #### 三、基本概念介绍 1. **元字符**...

    正则表达式只可以输入只允许输入中文、数字、字母、下划线

    正则表达式(Regular Expression)是一种强大的文本处理工具,在编程语言中被广泛应用于字符串的搜索与替换等操作。它能够帮助开发者快速定位、提取或验证文本中的模式。 #### 二、中文、数字、字母、下划线的匹配 ...

    Source Insight_正则表达式举例

    正则表达式是一种强大的文本匹配工具,广泛应用于各种编程语言和文本处理工具中,包括Source Insight等代码编辑器。通过正则表达式可以进行复杂的文本搜索和替换操作。下面将结合具体的例子来介绍正则表达式的基本...

    naturalregex一个允许你用自然语言编写正则表达式的解析器

    《自然语言正则表达式解析器:natural-regex在JavaScript中的应用》 在编程领域,正则表达式(Regular Expression)是一种强大的文本处理工具,它能够有效地进行模式匹配、查找、替换等操作。然而,传统的正则...

    正则表达式系统教程.RAR

    《正则表达式例子大全.txt》则是实践案例的集合,涵盖了各种实际应用场景,比如验证邮箱格式、手机号码、提取URL等。通过这些例子,你可以看到正则表达式的强大功能,并学会如何根据具体需求编写自己的正则表达式。...

    C#正则表达式小例子[源码]

    在C#编程语言中,正则表达式被广泛应用于数据验证、文本解析和处理等场景。本小例子是针对C#环境下的正则表达式应用,提供了实用的代码示例。 在C#中,正则表达式的操作主要通过`System.Text.RegularExpressions`...

    Python基础入门知识之正则表达式学习 正则表达式30分钟入门教程 共21页.pdf

    正则表达式是编程语言中用于模式匹配的强大工具,尤其在数据处理和文本搜索替换时极为有用。Python作为一门广泛使用的编程语言,内置了强大的正则表达式支持。本教程旨在帮助初学者在30分钟内对Python中的正则表达式...

    正则表达式系统教程CHM

    8. **实例解析**:提供大量实际例子,帮助学习者通过实践理解正则表达式的使用,例如在文本编辑器、命令行工具和编程语言中的应用。 9. **高级话题**:可能包括正则表达式在文本处理、数据验证、爬虫和搜索引擎优化...

    正则表达式处理html文本例子

    正则表达式(Regular Expression)是一种强大的文本处理工具,它能用于搜索、替换以及提取文本中的模式。在处理HTML文本时,正则表达式尤其有用,可以用来查找、替换或提取HTML标签及其内容。以下是对这个主题的详细...

    java正则表达式及例子 pdf

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。正则表达式在各种场景下都有广泛应用,如数据验证、文本提取、搜索替换等。本篇文章将深入探讨Java中的...

Global site tag (gtag.js) - Google Analytics