c++-手机号码校验 正则表达式匹配有问题 C++11可以通过 android下匹配失败 SOS!

问题描述

手机号码校验 正则表达式匹配有问题 C++11可以通过 android下匹配失败 SOS!
bool StringUtil::StringVerification(std::string src std::string regular)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)

regex pattern(regular.c_str());

if ( !regex_match( src pattern ) )

{
return false;
}
return true;
#endif

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID||CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

regex_t reg;
int retval = regcomp(&reg regular.c_str() REG_EXTENDED | REG_NEWLINE);

retval = regexec(&reg src.c_str() 0 NULL 0);CCLOG(""%s is %sn"" regular.c_str() retval == 0 ? ""legal"" : ""illegal"");regfree(&reg);if (retval == 0) {    return true;}else{    return false;}

#endif
}

测试用例:
StringUtil::StringVerification(strPhoneNum^1d{10}$"");

跪求高手解答,为什么C语言的通不过呢???

解决方案

try:

^1[0-9]{10}$

解决方案二:
^1d{10}$

主要是不同语法下的转义字符等

解决方案三:
C语言跟c++转义是一样的啊。。这个没有什么问题。。

解决方案四:
厉害!!确实是转义字符的问题 但是我不知道怎么改
^[a-zA-Z0-9~!@#$%^&*()_+`-={}[]:"";'<>?./]{%d%d}$
这种的就有点蛋疼了

解决方案五:
我已经搞定了!答案在这里!
http://blog.csdn.net/hanbingfengying/article/details/42613515

时间: 2024-09-04 00:03:55

c++-手机号码校验 正则表达式匹配有问题 C++11可以通过 android下匹配失败 SOS!的相关文章

常用正则表达式知识点解读及判读有效数字、手机号邮箱正则表达式_正则表达式

1.正则仅仅就是用来处理字符串的:匹配.捕获 匹配:验证当前的字符串是否符合我们的规则(每一个正则都是一个规则) 捕获:在整个字符串当中,把符合规则的字符都依次的获取到--->exec.match.replace 2.正则的组成:元字符.修饰符 元字符: 特殊意义的元字符: \d匹配一个0-9的数字相当于[0-9],和它相反的 \D匹配一个除了0-9的任意字符相当于[]  \w匹配一个0-9.a-z.A-Z_ 的数字或字符,相当于[0-9a-zA-Z_]  . \s匹配一个空白字符(空格.制表符

正则表达式简介(微软)--11.限定符

限定符有时候不知道要匹配多少字符.为了能适应这种不确定性,正则表达式支持限定符的概念.这些限定符可以指定正则表达式的一个给定组件必须要出现多少次才能满足匹配.下表给出了各种限定符及其含义的说明:字符 描述 * 匹配前面的子表达式零次或多次.例如,zo* 能匹配 "z" 以及 "zoo".* 等价于{0,}.+ 匹配前面的子表达式一次或多次.例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z&quo

正则表达式简介及在C++11中的简单使用教程

正则表达式Regex(regular expression)是一种强大的描述字符序列的工具.在许多语言中都存在着正则表达式,C++11中也将正则表达式纳入了新标准的一部分,不仅如此,它还支持了6种不同的正则表达式的语法,分别是:ECMASCRIPT.basic.extended.awk.grep和egrep.其中ECMASCRIPT是默认的语法,具体使用哪种语法我们可以在构造正则表达式的时候指定. 正则表达式是一种文本模式.正则表达式是强大.便捷.高效的文本处理工具.正则表达式本身,加上如同一门

java-如何使用Java程序或shell脚本删除某目录下匹配文件名的文件.

问题描述 如何使用Java程序或shell脚本删除某目录下匹配文件名的文件. 如何使用Java程序或shell脚本删除某目录下匹配文件名的文件. 解决方案 Java的话,直接调用File的delete方法就可以了.比如你拿到了要删除文件的路径为path.代码如下 File file = new File(path); file.delete(); 解决方案二: 先判断file是目录还是文件,如果是文件就匹配文件名删除,是目录就遍历,继续判断目录或文件(递归) 解决方案三: 要使用shell脚本删

solr匹配查询相关-solr查询时,为什么不能匹配多个结果返回

问题描述 solr查询时,为什么不能匹配多个结果返回 我在从solr中查询时,默认条件用的是or,但是遇到了一个问题,同一个core中,使用 查询条件如下:commodityReviewId:25021921 25026921 ,应该返回两条数据, 怎么结果只返回25021921对应的数据,如果25026921放在前面,则返回25026921对应的数据,不知道为什么这种查询会失效,关键是同一个core中,我用别的字段这样查没问题的,求解答,在线等

asp net 重载 不匹配-重载与委托Web.UI.WebControls.ObjectDataSourceStatusEventHandler不匹配

问题描述 重载与委托Web.UI.WebControls.ObjectDataSourceStatusEventHandler不匹配 我写了一个网页,用vs2010的asp.net,提示这个信息,是怎么回事呀,请高手指点呀 编译器错误消息: CS0123: "ObjectDataSource1_Updating"的重载均与委托"System.Web.UI.WebControls.ObjectDataSourceStatusEventHandler"不匹配 源错误:

Javascript正则匹配数字,中英文,中横线,下划线,utf-8中文

function check_string(nickname) {     var reg = /^[A-Za-z0-9-_\u4e00-\u9fa5]{4,30}$/;     if (!reg.test(nickname)) {         return false;     }     return true; }

php 正则表达式匹配中文规则

utf-8环 境下中文的匹配 \w匹配的仅仅是中文,数字,字母,对于国人来讲,仅匹配中文时常会用到,见下 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 或许你也需要匹配双字节字符,中文也是双字节的字符 匹配双字节字符(包括汉字在内):[^\x00-\xff] 注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 在ANSI(gb2312)环 境下 匹配全部的gb2312编 码表的字符:/[".chr(0xb0)."-".chr(0xf7).

js正则表达式之exec方法讲解_正则表达式

功能说明:该函数通过对指定你的字符串进行一次匹配检测,获取字符串中的第一个与正则表达式的内容,并且将匹配的内容和子匹配的结果存放在返回数组中 基本方法:objReg.exec(string) objReg,RegExp对象的名称 string,要进行匹配的字符串 正则表达式exec()函数: exec() 方法用于检索字符串中的正则表达式的匹配. 返回值是一个数组,但是此数组的内容和正则对象是否是全局匹配有着很大关系: 1.没有g修饰符: 在非全局匹配模式下,此函数的作用和match()函数是一