我试着寻找这个答案一段时间但没有运气(对不起,如果我能说得好)。我仍然是正则表达式的新手。我试图匹配只有数字和某个分隔符的字符串。例如:模式将是8/16/32/64 / ....数字将被“/”分割为任意数量的数字,我可以找到匹配它们的方法。 我的尝试是\ d + / \ d +?但无法让它发挥作用。
答案 0 :(得分:0)
一种天真的方法是
[\d/]+
但是,这与////
以及12345
匹配。仅匹配“正确”的字符串:
\d+(/\d+)+
读取数字后跟至少重复一次的分隔符+数字。如果允许尾随/前导分隔符,那么
/?(\d+/)+\d*
如果你使用的是使用斜杠引用正则表达式的味道(比如javascript),你需要转义它们:
/\d+(\/\d+)+/
答案 1 :(得分:0)
您可以删除'/'分隔符,然后测试是否存在数字
以下是一些C#作为例子:
static void Main(string[] args)
{
string text = "8/16/32/64/";
Console.WriteLine(text);
TestForNum(text);
text = "8/16/32/64/b";
Console.WriteLine(text);
TestForNum(text);
Console.ReadKey();
}
private static void TestForNum(string text)
{
string tmp = Regex.Replace(text, @"/", "");
Match m = Regex.Match(tmp, @"^\d+$");
if(m.Success)
{
Console.WriteLine("\t" + m.Groups[0]);
}
else Console.WriteLine("\tno match");
}
答案 2 :(得分:0)
答案 3 :(得分:0)
尽可能简单:
(\d+\/?)+
每个数字后跟[a]斜线,尽可能多。您可以对所有匹配使用g
标志。