c# - 正则表达式使用 C# 限制只出现一次左括号和右括号

标签 c# regex

如何确保在输入文本中不允许使用多个括号“(”和“)”? 我有以下表达式,将允许数字、空格、连字符和括号。

Regex.Match(text, @"^[0-9 (,),-]+$").Success

我不允许使用类似“((123) 456-7891 或 (91)123-23123(1)”之类的内容。正确的字符串可以是:“(123) 1231231 或 (121)123-213123。

编辑: 抱歉不清楚。要求是只允许数字、空格、连字符和括号(仅限一组)。具体来说,“(”应该总是有一个右括号“)”。正如你们中的一个人所说,没有 parent 或一套 parent 。如果有人还可以告诉如何不仅在开始时允许父级在任何位置?

最佳答案

这样做就可以了:

@"^(?:[^()]*|[^()]*\([^()]*\)[^()]*)$"

并且只允许数字、连字符和空格:

@"^(?:[-0-9 ]*|[-0-9 ]*\([-0-9 ]*\)[-0-9 ]*)$"

这基本上是说要么没有括号,要么只有一组括号。如果您只想要只有一组括号的字符串,您可以使用这种更简单的形式:

@"^[^()]*\([^()]*\)[^()]*$"

并且只允许数字、连字符和空格:

@"^[-0-9 ]*\([-0-9 ]*\)[-0-9 ]*$"

关于c# - 正则表达式使用 C# 限制只出现一次左括号和右括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4997469/

相关文章:

c# - 我是否需要重写我的异步方法/类来实现我想要的功能?

PHP 正则表达式句点

regex - 使用 REGEX 在 Hive Create 和 Load Query 中获取空值

regex - 如何让 vim 替换重复直到没有更多匹配项?

c# - 将每个 sql/存储过程调用包装在事务中有什么好处?

c# - 使用 Rx 构建可观察的存储库

c# - 在这种情况下抛出什么类型的异常?

python 正则表达式与 re.split()

javascript - 正则表达式未返回预期的匹配项

c# - 用于选择索引 > x 的所有项目的 Lambda 表达式