问题描述
- 手机号码校验 正则表达式匹配有问题 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(® regular.c_str() REG_EXTENDED | REG_NEWLINE);retval = regexec(® src.c_str() 0 NULL 0);CCLOG(""%s is %sn"" regular.c_str() retval == 0 ? ""legal"" : ""illegal"");regfree(®);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