正则表达式使用C#限制只出现一次打开和关闭括号
如何确保输入文本中不允许多个括号“(”和“)”? 我有以下表达式,允许数字,空格,连字符和括号。
Regex.Match(text, @"^[0-9 (,),-]+$").Success
我不支持“((123)456-7891或(91)123-23123(1)之类的内容。正确的字符串可以是:”(123)1231231或(121)123-213123。
编辑:抱歉不清楚。 要求是仅允许数字,空格,连字符和括号(仅限一组)。 具体而言,“(”应该总是有一个右括号“)”。 正如你们其中一个人所说的那样没有paren或者一套paren。 如果有人也可以告诉如何在任何位置允许paren不仅在开始时?
这样做:
@"^(?:[^()]*|[^()]*([^()]*)[^()]*)$"
并且只允许数字,连字符和空格:
@"^(?:[-0-9 ]*|[-0-9 ]*([-0-9 ]*)[-0-9 ]*)$"
这基本上说要么没有parens,要么只有一组parens。 如果您只想要具有一组parens的字符串,则可以使用以下更简单的forms:
@"^[^()]*([^()]*)[^()]*$"
并且只允许数字,连字符和空格:
@"^[-0-9 ]*([-0-9 ]*)[-0-9 ]*$"
^[^()]*([^()]*)[^()]*$
根据你的例子为我工作。 但是,这不会确保短语的其余部分是数字。 例如,这个正则表达式将匹配(123) 1231231
和abc(def)ghi
让我知道这是否正常。
如果它始终是开括号后跟3个数字,那么关闭括号,将其放入正则表达式:
@"^(d{3})s?d{3}-?d{4}$"
也就是说,开括号,三个数字,近括号,可选空格,三个数字,可选连字符,四个数字。
你问的问题和你想要的东西可能是两个不同的东西:-)一些例子:
他们合法吗?
从这开始:
法律:
正则表达式:
@"^(([0-9]+) ?)?[0-9]+(-[0-9]+)?$"
我认为这适用于您指定的上述实例:
Regex.Match(text, @"^([0-9]{3})s?[0-9]{3}-?[0-9]+$").Success
这将匹配字符串末尾的任意位数。 您没有指定允许的数量。 如果你想使这个更具体,你可以用{4,6}替换最后一个+符号,其中4是 – 后面的最小位数,而6是最大值。
上述就是C#学习教程:正则表达式使用C#限制只出现一次打开和关闭括号分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1006120.html