C++ 判断是否为邮箱格式
总结了一下合法的email地址格式如下:
1. 首字符必须用字母,而且其它的字符只能用26个大小写字母、0~9及_-.@符号
2. 必须包含一个并且只有一个符号“@”
3. @后必须包含至少一个至多三个符号“.”
4. 第一个字符不得是“@”或者“.”(第一步已检查过了)
5. 不允许出现“@.”或者.@
6. 结尾不得是字符“@”或者“.”
现在就把本人写的代码发布出来给大家做参考。以下代码在VS2005(UNICODE)中测试通过,应该来说基本满足大部分的验证需求:
//检查字符的有效性,包括26个大小写字母、0~9及_-.@符号
bool JCLoginGameLayer::IsValidChar(char ch)
{
if( (ch>=97) && (ch<=122) ) //26个小写字母
return true;
if( (ch>=65) && (ch<=90) ) //26个大写字母
return true;
if((ch>=48) && (ch<=57)) //0~9
return true;
if( ch==95 || ch==45 || ch==46 || ch==64 ) //_-.@
return true;
return false;
}
bool JCLoginGameLayer::IsValidEmail(string strEmail)
{
if( strEmail.length()<5 ) //26个小写字母
return false;
char ch = strEmail[0];
if( ((ch>=97) && (ch<=122)) || ((ch>=65) && (ch<=90)) )
{
int atCount =0;
int atPos = 0;
int dotCount = 0;
for(int i=1;i<strEmail.length();i++) //0已经判断过了,从1开始
{
ch = strEmail[i];
if(IsValidChar(ch))
{
if(ch==64) //"@"
{
atCount ++;
atPos = i;
}
else if( (atCount>0) && (ch==46) )//@符号后的"."号
dotCount ++;
}
else
return false;
}
//6. 结尾不得是字符“@”或者“.”
if( ch == 46 )
return false;
//2. 必须包含一个并且只有一个符号“@”
//3. @后必须包含至少一个至多三个符号“.”
if( (atCount!=1) || (dotCount<1) || (dotCount>3) )
return false;
//5. 不允许出现“@.”或者.@
int x,y;
x=strEmail.find("@.");
y=strEmail.find(".@");
if( x>0 || y>0 )
{
return false;
}
return true;
}
return false;
}
测试结果:
IsValidEmail(_T("abcd@hotmail.com")); 返回TRUE
IsValidEmail(_T("_abcd@hotmail.com")); 返回FALSE
IsValidEmail(_T("a.b.c.@abc.com")); 返回FALSE
IsValidEmail(_T("a.b.c@abc.com")); 返回TRUE
IsValidEmail(_T("abcd@hotmail.com.cn")); 返回TRUE
IsValidEmail(_T("abcd@hotmail.com.cn.fj")); 返回FALSE
IsValidEmail(_T(9abcd@hotmail.com.cn)); 返回FALSE
C++ 判断是否为邮箱格式的更多相关文章
- iOS之判断手机号码、邮箱格式是否正确
//判断手机号码格式是否正确 + (BOOL)valiMobile:(NSString *)mobile{ mobile = [mobile stringByReplacingOccurren ...
- [Swift通天遁地]七、数据与安全-(14)使用单元测试进行邮箱格式的验证
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- jquery判断邮箱格式问题
方法一: var search_str = /^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/; var email_val = $("#Email").val(); ...
- ORACLE中使用SQL的正则表达式判断邮箱格式
在数据库中,有时需要判断字符串是否是一个或者多个邮箱格式,可以使用如下语句判断: ) FROM dual WHERE regexp_like(v_mail,'^\w+((-\w+)|(\.\w+))* ...
- iOS开发——判断邮箱格式
//判断邮箱格式 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@ ...
- JS判断邮箱格式
function check(){ var strText=$("#email").val(); var strReg=/^\w+((-\w+)|(\.\w+))*\@ ...
- js判断手机邮箱格式(正则)
function fun() { var realname = document.getElementById("realname"); var telephone = docum ...
- 在js中实现邮箱格式的验证
在js中实现邮箱格式的验证 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><htm ...
- js正则表达式:验证邮箱格式、密码复杂度、手机号码、QQ号码
直接上代码 Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...
随机推荐
- SPI 及初始化例子
概述 时钟相性与极性 CPOL(Clock Polarity)控制空闲状态时SCK的值:CPOL=0,空闲时SCK=0:CPOL=1,空闲时SCK=1. CPHA(Clock Phase)控制何时捕获 ...
- Android笔记之ExpandableListView(悬浮吸顶Demo)
参考链接 ExpandableListView中item的定位问题 - RELY_ON_YOURSELF的博客 - CSDN博客(感觉写得很好,讲到了组位置.子位置及原始位置之间的转换) how to ...
- opencv3中surfDetector中使用
https://www.cnblogs.com/anqiang1995/p/7398218.html opencv3中SurfFeatureDetector.SurfDescriptorExtract ...
- 2018-8-10-使用-IncrediBuild-提升-VisualStudio-编译速度
title author date CreateTime categories 使用 IncrediBuild 提升 VisualStudio 编译速度 lindexi 2018-08-10 19:1 ...
- DataList做一个相册,并可以上传图片
1.前台代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DataLis ...
- LeetCode动态规划题总结【持续更新】
以下题号均为LeetCode题号,便于查看原题. 10. Regular Expression Matching 题意:实现字符串的正则匹配,包含'.' 和 '*'.'.' 匹配任意一个字符,&quo ...
- flex:1将页面铺满
代码示范: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- CSS——用户界面样式
所谓的界面样式, 就是更改一些用户操作样式, 比如 更改用户的鼠标样式, 表单轮廓等.但是比如滚动条的样式改动受到了很多浏览器的抵制,因此我们就放弃了. 防止表单域拖拽 鼠标样式cursor 设置或检 ...
- js 盒子模型与盒子偏移量
js 盒子模型: 通过js中提供的一系列属性和方法获取页面中元素的样式信息值. 一.client系类—>只读属性不可设置 (当前元素的私有属性,和内容溢出没关系,如果给容器设置了高度,就采用设置 ...
- IntelliJ IDEA更换主题样式分享
原文地址:https://blog.csdn.net/liu865033503/article/details/79481785 .自定义主题样式网址:http://www.riaway.com/in ...