C++11支持正则表达式,简单记录下:
| 符号 | 意义 |
|---|---|
| ^ | 匹配行的开头 |
| $ | 匹配行的结尾 |
| . | 匹配任意单个字符 |
| […] | 匹配[]中的任意一个字符 |
| (…) | 设定分组 |
| \ | 转义字符 |
| \d | 匹配数字[0-9] |
| \D | \d 取反 |
| \w | 匹配字母[a-z],数字,下划线 |
| \W | \w 取反 |
| \s | 匹配空格 |
| \S | \s 取反 |
| + | 前面的元素重复1次或多次 |
| * | 前面的元素重复任意次 |
| ? | 前面的元素重复0次或1次 |
| {n} | 前面的元素重复n次 |
| {n,} | 前面的元素重复至少n次 |
| {n,m} | 前面的元素重复至少n次,至多m次 |
| | | 逻辑或 |
项目中需要匹配手机号和固定电话:
//固定电话(不强制区号)
std::regex reTelePhone("^(\\d{3,4})?\\d{7,8}$");
//固定电话(强制区号)
std::regex reTelePhone2("^(0\\d{2,3})?(\\d{7,8})$");
//移动电话
std::regex reMobilePhone("^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$");
这篇博客介绍了C++11中正则表达式的使用,特别是针对手机号和固定电话的匹配规则。提供了三种匹配模式:非强制区号的固定电话、强制区号的固定电话以及移动电话的正则表达式。通过这些示例,读者可以了解到如何利用C++11的regex库进行复杂字符串匹配。
1004

被折叠的 条评论
为什么被折叠?



