在问个正则表达式的问题

夹心饼干 2009-06-01 01:14:12
我写了个验证输入的字符串不能为特殊字符的,程序是这样的
#include "stdafx.h"
#include <iostream>
#include <string>
#include "boost/regex.hpp"
using namespace boost;
using namespace std;

char* name_regex = "^([^\uFF00-\uFFFF])*([u4e00-\u9fa5|A-Za-z0-9])+$";
char* str1 = "^[^;~`\^@|:?></\\]+$";//问题就在这个转义字符\上,只要加进去就直接异常出红X了
//如果改为char* str1 = "^[^;~`\^@|:?></(\\)]+$";就不会,但是还是没有实现排除\的效果


bool regex_verify(const char* str1,char* regex_s)
{
boost::regex exampleregex(regex_s);
boost::cmatch result;
return boost::regex_search( str1, result, exampleregex );
}

int _tmain(int argc, _TCHAR* argv[])
{
const char* str = "hu\\1";
if (regex_verify(str,name_regex)&& regex_verify(str,str2))
{
cout<<"success========="<<endl;
}
else
{
cout<<"failed========="<<endl;
}

return 0;
}


请问高手到底是怎么回事呢?
...全文
120 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
夹心饼干 2009-06-01
  • 打赏
  • 举报
回复
呵呵,谢谢楼上的两位了,揭贴去了
taodm 2009-06-01
  • 打赏
  • 举报
回复
实践出真知。
夹心饼干 2009-06-01
  • 打赏
  • 举报
回复
楼上的老大.关键是我想问是不是一定不能用ascii呢?毕竟unicode的范围用得比ascii的范围大很多
taodm 2009-06-01
  • 打赏
  • 举报
回复
实现功能就好。
夹心饼干 2009-06-01
  • 打赏
  • 举报
回复
我用unicode的也可以实现功能啊,为什么一定要用ascii?改成了\x也可以实现,但是好多范围要重新判断
cyr12 2009-06-01
  • 打赏
  • 举报
回复
改成这样啊char* str1 = "^[^;~`\\^@|:?></(\\)]+$"
^不需要转义的
taodm 2009-06-01
  • 打赏
  • 举报
回复
boost库里自己带例子程序的,自己打开看看吧。
夹心饼干 2009-06-01
  • 打赏
  • 举报
回复
楼上的"又一个学到boost忘了C、C++本身的转义符的"不是很明白,能不能清楚点?
使用unicode的\uFF00这个是个问题,我要改成两个\x表示16进制就可以了
taodm 2009-06-01
  • 打赏
  • 举报
回复
呃,又一个学到boost忘了C、C++本身的转义符的。
另外还对ansi编码使用unicode的\uFF00

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧