C++。写一个限制输入手机号的正则表达式
时间: 2023-10-19 21:16:46 浏览: 48
可以使用以下正则表达式来限制输入手机号:
```cpp
#include <regex>
#include <iostream>
int main()
{
std::regex pattern("^1[3456789]\\d{9}$");
std::string input;
std::cout << "请输入手机号: ";
std::cin >> input;
if(std::regex_match(input, pattern))
{
std::cout << "手机号格式正确!" << std::endl;
}
else
{
std::cout << "手机号格式不正确!" << std::endl;
}
return 0;
}
```
解释一下正则表达式:
^1[3456789]:以1开头,后面跟一个3、4、5、6、7、8、9中的任意一个数字。
\\d{9}$:后面跟着9个数字,并且以数字结尾。
这个正则表达式只允许输入以1开头的11位手机号码。
相关问题
用c++写一个手机号的正则表达式
正则表达式:^1[3456789][0-9]{9}$
解释:
- ^ 表示匹配字符串的开始
- 1 表示第一位必须是数字 1
- [3456789] 表示第二位必须是 3、4、5、6、7、8、9 中的一个
- [0-9]{9} 表示接下来必须是九个 ( {9} ) 数字 ( [0-9] )
- $ 表示匹配字符串的结尾
c++ 手机号正则表达式
以下是C++中判断手机号是否合法的正则表达式代码:
```c++
#include <iostream>
#include <regex>
#include <string>
int main() {
std::regex str_reg("1([0-9]{10})"); //判断是否是合法的手机号
std::string str_in("18321768967"); //输入的手机号
std::smatch matchResult; //正则匹配
if (std::regex_match(str_in, matchResult, str_reg)) {
std::cout << "Match:" << std::endl; //打印子表达式结果
for (size_t i = 0; i < matchResult.size(); ++i) {
std::cout << matchResult[i] << std::endl;
}
} else {
std::cout << "Not Match!" << std::endl;
}
return 0;
}
```
其中,正则表达式`1([0-9]{10})`表示以数字1开头,后面跟着10个数字的字符串,即符合手机号的格式。如果输入的字符串符合该正则表达式,则输出"Match:",并打印子表达式结果,否则输出"Not Match!"。