正则表达式,允许单词之间只有一个连字符

时间:2013-03-20 16:17:32

标签: asp.net regex

我在ASP.NET应用程序中有一个文本框,我需要使用正则表达式来验证用户输入字符串。要求是带有字符串的连字符总数只能是一个。

匹配:

  1. 测试
  2. 试验你好
  3. 测试 -
  4. -Test
  5. 不匹配:

    1. 测试 - 你好
    2. -test -
    3. 测试问候 -

2 个答案:

答案 0 :(得分:3)

您可以使用此模式匹配带有零个或一个连字符的字符串:

^[^-]*-?[^-]*$

<强>解释

从字符串(^)的开头开始,它将是零个或多个非连字符([^-]*),后跟一个可选的连字符(-?),然后是零个或多个非连字符([^-]*)和字符串结尾($


此模式用于将字符串与一个连字符匹配:

^[^-]*-[^-]*$

<强>解释

从字符串(^)的开头开始,它将是零个或多个非连字符([^-]*),后跟一个必需的连字符(-),然后是零个或多个非连字符([^-]*)和字符串结尾($

答案 1 :(得分:2)

试试这个:

^[^-]*-?[^-]*$

[^-]是一个非连字符。