程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++中正則表達式 的 子表達式(subexpressions) 的數據驗證

C++中正則表達式 的 子表達式(subexpressions) 的數據驗證

編輯:關於C++

子表達式(subexpressions)的 數據驗證(data validation), 可以通過括號"()"分解正則表達式的子表達式;

然後使用下標標示符[], 輸出相應的子表達式, "0"代表全體, "1"代表第一個括號, 依次遞加;

通過對於問號項?是否匹配, 驗證正則表達式的匹配式;

代碼:

#include <iostream>  
#include <string>  
      
#include <boost/regex.hpp>  
      
using namespace std;  
using namespace boost;  
      
bool valid(const boost::smatch& m)  
{  
    if(m[1].matched)  
        return m[3].matched && (m[4].matched == 0 || m[4].str() == " ");  
    else
        return !m[3].matched && m[4].str() == m[6].str();  
}  
      
int main()  
{  
    //問號(?)表示之前的可以選擇  
    std::string phone =  
            "(\\()?(\\d{3})(\\))?([-. ])?(\\d{3})([-. ]?)(\\d{4})";
    boost::regex r(phone);  
    boost::smatch m;  
    std::string s("(432)312-3425 9424151424 15");  
    for(boost::sregex_iterator it(s.begin(), s.end(), r), end_it;  
            it != end_it; ++it)  
    {  
        if(valid(*it))  
            std::cout << "valid : " << it->str() << std::endl;  
        else
            std::cout << "not valid : " << it->str() << std::endl;  
    }  
}

輸出:

valid : (432)312-3425  
valid : 9424151424

作者:csdn博客 Spike_King

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved