问题:测试给定的 Regex
是否匹配整个字符串的最简单方法是什么?
一个例子:
例如。 given Regex re = new Regex(".");
我想使用这个 Regex re
测试给定的输入字符串是否只有一个字符。我该怎么做?
换句话说:我正在寻找类 Regex
的方法,其工作方式类似于类 中的方法
(“尝试将整个区域与模式匹配。”)。matches()
Java 中的匹配器
编辑: 这个问题不是关于获取一些 string
的长度。问题是如何将整个 字符串与正则表达式匹配。这里的例子只是为了演示(一般大家会检查Length
属性来识别一个字符串)。
最佳答案
如果您被允许更改正则表达式,您应该用 ^( ... )$
将其括起来。您可以在运行时按如下方式执行此操作:
string newRe = new Regex("^(" + re.ToString() + ")$");
这里的括号是必要的,以防止创建像 ^a|ab$
这样的正则表达式,它不会做你想做的事。此正则表达式匹配任何以 a
开头的字符串或任何以 ab
结尾的字符串。
如果您不想更改正则表达式,您可以检查 Match.Value.Length == input.Length
。这是在 ASP.NET 正则表达式验证器中使用的方法。看我的回答here以获得更全面的解释。
请注意,此方法可能会导致一些您应该注意的奇怪问题。正则表达式“a|ab”将匹配字符串“ab”,但匹配的值只会是“a”。所以即使这个正则表达式可以匹配整个字符串,它也没有匹配。文档中有关于此的警告。
关于c# - 简单的 C# 正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3342019/