C++正则匹配实⽤⽰例
正则表达式匹配:
头⽂件:
#include<regex>
例⼦:
#include<iostream>
正则表达式提取中文字符#include<regex>
using namespace std;
int main()
{
regex reg("\\d{4,6}");  //匹配4--6位的数字
string testNum = "99999";
smatch result;
bool ret = regex_match(testNum, result, reg);
cout << (ret ? "格式正确" : "格式不正确") << endl;
return 0;
}
常⽤匹配⽰例:
匹配中⽂字符的正则表达式: [\u4e00-\u9fa5]
评注:匹配中⽂还真是个头疼的事,有了这个表达式就好办了
匹配双字节字符(包括汉字在内):[^\x00-\xff]
评注:可以⽤来计算字符串的长度(⼀个双字节字符长度计2,ASCII字符计1)
匹配空⽩⾏的正则表达式:\n\s*\r
评注:可以⽤来删除空⽩⾏
匹配HTML标记的正则表达式:<(\s*?)[^>]*>.*?|<.*?>
评注:⽹上流传的版本太糟糕,上⾯这个也仅仅能匹配部分,对于复杂的嵌套标记依旧⽆能为⼒
匹配⾸尾空⽩字符的正则表达式:^\s*|\s*$
评注:可以⽤来删除⾏⾸⾏尾的空⽩字符(包括空格、制表符、换页符等等),⾮常有⽤的表达式
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
评注:表单验证时很实⽤
匹配⽹址URL的正则表达式:[a-zA-z]+://[^\s]*
评注:⽹上流传的版本功能很有限,上⾯这个基本可以满⾜需求
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$评注:表单验证时很实⽤
匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
评注:匹配形式如 0511-******* 或 021-********
匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始
匹配中国:[1-9]\d{5}(?!\d)
评注:中国为6位数字
匹配⾝份证:/^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]| [X])$/;
评注:中国的⾝份证为15位或18位
匹配ip地址:\d+\.\d+\.\d+\.\d+
评注:提取ip地址时有⽤
匹配⼿机号:/^1(3[0-9]|4[5,7]|5[0,1,2,3,5,6,7,8,9]|6[2,5,6,7]|7[0,1,7,8]|8[0-9]|9[1,8,9])\d{8}$/
评注:2019年
匹配特定数字:
^[1-9]\d*$    //匹配正整数
^-[1-9]\d*$  //匹配负整数
^-?[1-9]\d*$  //匹配整数
^[1-9]\d*|0$  //匹配⾮负整数(正整数 + 0)
^-[1-9]\d*|0$  //匹配⾮正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$  //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$  //匹配⾮负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配⾮正浮点数(负浮点数 + 0)
评注:处理⼤量数据时有⽤,具体应⽤时注意修正
匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英⽂字母组成的字符串
^[A-Z]+$  //匹配由26个英⽂字母的⼤写组成的字符串
^[a-z]+$  //匹配由26个英⽂字母的⼩写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英⽂字母组成的字符串
^\w+$  //匹配由数字、26个英⽂字母或者下划线组成的字符串
str为要去除空格的字符串:
去除所有空格:
str = place(/\s+/g, "");
去除两头空格:
str = place(/^\s+|\s+$/g, "");
去除左空格:
str = place(/^\s*/, '');
去除右空格:
str = place(/(\s*$)/g, "");
var codeCheck = /^[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/;//统⼀社会信⽤代码
资料参考:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。