C语言实现电子邮件地址验证程序

我们最经常遇到的验证,就是电子邮件地址验证。网站上常见。各种网页脚本也都常用“正则表达式”(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法。有的还能分解出用户名和域名。现在用C语言实现一下电子邮件地址验证程序,用的是POSIX正则表达式。由于用的是POSIX正则表达式,所以只能用gcc编译。
另外,据测试,只有Linux原版的gcc才能编译通过。如果用Windows中的MinGW或Cygwin的gcc编译不通过,错误是找不到<regex.h>头文件。
C语言源代码如下:

/*
 * regex.c - 用正则表达式验证电子邮件地址
 *
 *  POSIX正则表达式
 *
 *
 * 编译命令:
 *  gcc regex.c -o regex -Wall
 *
 *
 *  Copyright 叶剑飞 2012
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <regex.h> /* regular expression 正则表达式 */

#define MAX_LENGTH 1000

int main (void)
{
 size_t char_num;
 char email_address[MAX_LENGTH];
 char user_name[MAX_LENGTH];
 char domain_name[MAX_LENGTH];

 regmatch_t pmatch[4];
 regex_t match_regex;

 regcomp( &match_regex,
  "([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)",
  REG_EXTENDED );

 while ( scanf( "%s", email_address ) != EOF )
 {
 if ( regexec( &match_regex, email_address, 4, pmatch, 0 ) == 0 )
 {
  char_num = pmatch[1].rm_eo - pmatch[1].rm_so;
  strncpy( user_name, &(email_address[pmatch[1].rm_so]), char_num );
  user_name[char_num] = '\0';

  char_num = pmatch[2].rm_eo - pmatch[2].rm_so;
  strncpy( domain_name, &(email_address[pmatch[2].rm_so]), char_num );
  domain_name[char_num] = '\0';

  puts( "您输入的电子邮件地址合法" );
  printf ( "用户名:%s\n", user_name );
  printf ( "域名:%s\n\n", domain_name );
 }
 else
  puts( "您输入的电子邮件地址不合法\n\n" );
 }

 regfree( &match_regex );
 return EXIT_SUCCESS;
}

之前文章中介绍了许多邮箱验证正则表达式的方法,js正则表达式验证邮件地址,php邮箱地址正则表达式验证,本文是C语言实现电子邮件地址验证,希望大家结合相关文章进行学习,从中得到收获。

(0)

相关推荐

  • JS正则验证邮箱的格式详细介绍

    对于我们做WEB开发的,对表单的验证是必不可少的,所以今天把常用的一些验证罗列出来,呵呵,今天下午刚学的JS正则表达式,有什么不足的地方还希望大家批评指正. 一.相关的代码 复制代码 代码如下: function test() {  var temp = document.getElementById("text1");  //对电子邮件的验证  var myreg = /^([a-zA-Z0-9]+[_|/_|/.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|/_

  • 邮箱地址正则表达式验证代码合集脚本之家特别版

    邮箱地址验证正则表达式 dedecms中的邮箱地址验证 复制代码 代码如下: <?php $email="test@jb51.com"; //邮箱格式检查 function CheckEmail($email) { return eregi("^[0-9a-z][a-z0-9\._-]{1,}@[a-z0-9-]{1,}[a-z0-9]\.[a-z\.]{1,}[a-z]$", $email); } echo CheckEmail($email); phpcm

  • java正则表达式验证邮箱、电话号码示例

    下面的代码使用正则表达式验证输入格式包括了验证邮箱和验证手机号码 复制代码 代码如下: package com.firewolf.utils; import java.util.regex.Matcher; import java.util.regex.Pattern; /**  * 使用正则表达式验证输入格式  * @author liuxing  *  */ public class RegexValidateUtil {  public static void main(String[]

  • java正则表达式表单验证类工具类(验证邮箱、手机号码、qq号码等)

    java使用正则表达式进行表单验证工具类,可以验证邮箱.手机号码.qq号码等 复制代码 代码如下: package util; import java.util.regex.Matcher;import java.util.regex.Pattern; /** * 使用正则表达式进行表单验证 *  */ public class RegexValidateUtil {    static boolean flag = false;    static String regex = ""

  • Java注册邮箱激活验证实现代码

    最近从项目分离出来的注册邮箱激活功能,整理一下,方便下次使用 RegisterValidateService.java 复制代码 代码如下: package com.app.service.impl; import java.text.ParseException;import java.util.Date; import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stere

  • 比较正宗的验证邮箱的正则表达式js代码详解

    fuchangxi的正则: 复制代码 代码如下: /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/ 开始必须是一个或者多个单词字符或者是-,加上@,然后又是一个或者多个单词字符或者是-.然后是点"."和单词字符和-的组合,可以有一个或者多个组合. 复制代码 代码如下: <script type="text/javascript"> function isEmail(str){ var reg =

  • jquery验证手机号码、邮箱格式是否正确示例代码

    复制代码 代码如下: //jquery验证邮箱 function checkSubmitEmail() { if ($("#email").val() == "") { //$("#confirmMsg").html("<font color='red'>邮箱地址不能为空!</font>"); alert("邮箱不能为空!") $("#email").focus(

  • php邮箱地址正则表达式验证

    我们最经常遇到的验证,就是电子邮件地址验证.网站上常见.各种网页脚本也都常用"正则表达式"(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法.有的还能分解出用户名和域名.现在用PHP语言实现一下电子邮件地址验证程序,用的是PHP正则表达式库. 源代码如下: <?php header ( "Content-Type: text/html; charset=UTF-8" ); $reply = ""; if

  • Ajax实时验证用户名/邮箱等是否已经存在的代码打包

    今天分享一个"利用Ajax技术来检测用户名是否存在"的例子. 利用Ajax技术来检测用户名是否存在的原理流程图: 最终结果截图: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="

  • javaScript 简单验证代码(用户名,密码,邮箱)

    复制代码 代码如下: <script language="javascript"> function IsDigit(cCheck) { return (('0'<=cCheck) && (cCheck<='9')); } function IsAlpha(cCheck) { return ((('a'<=cCheck) && (cCheck<='z')) || (('A'<=cCheck) &&

随机推荐