Csharp/C#教程:正则表达式使用C#限制只出现一次打开和关闭括号分享


正则表达式使用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) 1231231abc(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

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐