c# - 简单的 C# 正则表达式问题

标签 c# regex

问题:测试给定的 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/

相关文章:

javascript - 使用 selectize multiselect 将值传递给数据库

c# - 将字符串 [123,234,...] 转换为 List<int> 并返回的更好方法

c# - 临时清除Linux中的终端

c# - 无法从 dotnet CLI 构建 Azure Functions 项目

ruby - 在 Ruby 的情况下使用带正则表达式匹配的命名捕获……什么时候?

c - 标准 C 正则表达式库匹配错误

python - 用于解析像字符串这样的 shell 命令的正则表达式

c# - .NET 字节数组 COM 转换问题

MySQL RegExp 错误地将重音字符与 utf8 字符集和二进制排序规则匹配

php - 确定两个名称是否彼此接近