我需要rexexp允许最多两个数字连续用点分隔,如1.2或1.2.3或1.2.3.45等,但不是1234或1.234等。我试试这个" ^ [\ d {1,2}。] +",但它允许所有数字。怎么了?
答案 0 :(得分:5)
你可以试试这个:
^\d{1,2}(\.\d{1,2})+$
说明:
^
字符串的开头\d{1,2}
后跟一位或两位数字(
捕获组的开始\.\d{1,2}
后跟一个点和一个或两个数字)
捕获组结束+
表示先前的捕获组重复一次或多次$
字符串结尾示例C ++源代码(run here):
#include <regex>
#include <string>
#include <iostream>
using namespace std;
int main()
{
string regx = R"(^\d{1,2}(\.\d{1,2})+$)";
string input = "1.2.346";
smatch matches;
if (regex_search(input, matches, regex(regx)))
{
cout<<"match found";
}
else
cout<<"No match found";
return 0;
}
答案 1 :(得分:0)
我认为最后一个不应超过2位。
(\d{1,2}\.)+\d{1,2}(?=\b)