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