Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1609205
  • 博文数量: 245
  • 博客积分: 10378
  • 博客等级: 上将
  • 技术积分: 2571
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-27 08:19
文章分类

全部博文(245)

文章存档

2013年(4)

2012年(8)

2011年(13)

2010年(68)

2009年(152)

分类: C/C++

2010-10-27 18:25:23

#include <boost/regex.hpp>
#include <string>
#include <iostream>
#define REGEX_ISFLOAT        "[0-9]|[0-9]\.[0-9]"
#define REGEX_ISNUM        ""
#define REGEX_ISAL            ""

using namespace std;
using namespace boost;
boost::regex expression(REGEX_ISFLOAT);//设定正则规则
std::string str;

int main(int argc, _TCHAR* argv[])
{
    while(1)
    {
        cout<<"输入"<<endl;
        cin>>str;

    
        if( regex_match( str,expression)) //字符串匹配
        {
            cout<<"匹配成功"<<endl;
        }
        else
        {
            cout<<"匹配失败"<<endl;
        }
    }
    return 0;

}

由上边可以看见,如果适用boost regex可以很方便的进行字符串的匹配,特别在用户界面输入的时候,可以对用户输入的非法字符串进行过滤,假设现在的任务是检测编辑框输入的信息,如果是浮点数或者整型,则为正确,否则为非法。

首先包含相关的boost regex头文件:

#include

using namespace boost;

设定正则规则:

#define  REGEX_ISFLOAT  "[0-9]|[0-9]\.[0-9]"
#define  REGEX_ISNUM  ""
#define  REGEX_ISAL   ""

boost::regex expression(REGEX_ISFLOAT);

假设输入的字符存储在std::string str里边.匹配可以使用下边的函数:

if(  regex_match( str,expression))
  {
   cout<<"匹配成功"<  }
  else
  {
   cout<<"匹配失败"<  }

整个过程既是这么简单,boost无敌强大。

通过上边的过程,如果设定合适的正则规则,就可以检测比如ip地址输入、浮点数整数输入、电话号码输入、年月日、时间等。

 


 

阅读(2000) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~