C# Regex使用C限制开括号和闭括号只出现一次#
如何确保输入文本中不允许有多个括号“(“and”)”? 下面的表达式允许数字、空格、连字符和方括号C# Regex使用C限制开括号和闭括号只出现一次#,c#,regex,C#,Regex,如何确保输入文本中不允许有多个括号“(“and”)”? 下面的表达式允许数字、空格、连字符和方括号 Regex.Match(text, @"^[0-9 (,),-]+$").Success 我不知道该允许什么,比如“((123)456-7891或(91)123-23123(1)。正确的字符串可以是:”(123)1231231或(121)123-213123 编辑: 很抱歉不清楚。要求只允许数字、空格、连字符和方括号(仅限一组)。具体来说,“(“应始终有一个结束方括号”)。正如你们中的一位所说的
Regex.Match(text, @"^[0-9 (,),-]+$").Success
我不知道该允许什么,比如“((123)456-7891或(91)123-23123(1)。正确的字符串可以是:”(123)1231231或(121)123-213123
编辑:
很抱歉不清楚。要求只允许数字、空格、连字符和方括号(仅限一组)。具体来说,“(“应始终有一个结束方括号”)。正如你们中的一位所说的“无括号”或“一组括号”。如果有人也能告诉我们如何允许在任何位置使用括号,而不仅仅是在开始时
^[^\(\)]*\([^\(\)]*\)[^\(\)]*$
根据您的示例为我工作。但是,这不能确保短语的其余部分是数字。例如,此正则表达式将同时匹配(123)1231231
和abc(def)ghi
让我知道这是否正确。这样做:
@"^(?:[^()]*|[^()]*\([^()]*\)[^()]*)$"
并且仅允许数字、连字符和空格:
@"^(?:[-0-9 ]*|[-0-9 ]*\([-0-9 ]*\)[-0-9 ]*)$"
@"^[-0-9 ]*\([-0-9 ]*\)[-0-9 ]*$"
这基本上意味着要么没有paren,要么只能有一组paren。如果您只希望字符串正好有一组paren,可以使用以下更简单的形式:
@"^[^()]*\([^()]*\)[^()]*$"
并且仅允许数字、连字符和空格:
@"^(?:[-0-9 ]*|[-0-9 ]*\([-0-9 ]*\)[-0-9 ]*)$"
@"^[-0-9 ]*\([-0-9 ]*\)[-0-9 ]*$"
你所要求的和你想要的可能是两件不同的事情:-) 一些例子:
- 1234(12)
- 1234
- )1234
- (123412)
- 123456
- 1234-456
- (123)345
- (123)345
- (123)345-678
- (123)345678
@"^(\(\[0-9]+\) ?)?\[0-9]+(-\[0-9]+)?$"
如果始终是开括号后跟3个数字,则关闭括号,将其放入正则表达式:
@"^\(\d{3}\)\s?\d{3}-?\d{4}$"
也就是说,开括号、三个数字、闭括号、可选空格、三个数字、可选连字符、四个数字。我认为这适用于您指定的上述实例:
Regex.Match(text, @"^\([0-9]{3}\)\s?[0-9]{3}-?[0-9]+$").Success
这将匹配字符串末尾的任意位数。您没有指定允许的位数。如果您想更具体,可以将最后一个+符号替换为{4,6}其中,4是-后面的最小位数,6是最大位数。注意\d将匹配其他字符集的数字,而\s将匹配制表符和其他“奇怪”空格(例如nbsp)。是的,Xantos是正确的。但是感谢您的响应。我需要允许在任何位置使用paren,但“)应在“(”。你是对的,我没有编辑这篇文章。顺便问一下,如何确保括号在字符串中的任何位置。这意味着可以在开头或中间?只需要数字、空格、连字符和括号。很好,但是如何确保只包含数字、空格和连字符。使用只允许数字、空格和连字符的模式进行更新你要求的。Michael,这是很棒的东西。我使用了-@“^(?:[-0-9]*.[-0-9]*([-0-9]*)[-0-9]*)$”,效果很好。我编辑了这篇文章。需要检查字符串中的任何位置,但只有一组。