Asp.net 正则表达式,以便在单词之间仅允许一个连字符

Asp.net 正则表达式,以便在单词之间仅允许一个连字符,asp.net,regex,Asp.net,Regex,我在ASP.NET应用程序中有一个文本框,需要使用正则表达式来验证用户输入字符串。要求是带有字符串的连字符总数只能是一个 匹配项: 试验 测试你好 试验- -试验 非匹配项: 测试,你好 -试验- 测试你好-- 可以使用此模式匹配带有零或一个连字符的字符串: ^[^-]*-?[^-]*$ ^[^-]*-[^-]*$ 说明: 从字符串的开头(^)开始,它将包含零个或多个非连字符([^-]*),后跟可选连字符(-?),后跟零个或多个非连字符([^-]*)和字符串的结尾($) 此模式用于匹配只有

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

匹配项:

  • 试验
  • 测试你好
  • 试验-
  • -试验
  • 非匹配项:

  • 测试,你好
  • -试验-
  • 测试你好--

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

    ^[^-]*-?[^-]*$
    
    ^[^-]*-[^-]*$
    
    说明:

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


    此模式用于匹配只有一个连字符的字符串:

    ^[^-]*-?[^-]*$
    
    ^[^-]*-[^-]*$
    
    说明:


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

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

    ^[^-]*-?[^-]*$
    
    ^[^-]*-[^-]*$
    
    说明:

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


    此模式用于匹配只有一个连字符的字符串:

    ^[^-]*-?[^-]*$
    
    ^[^-]*-[^-]*$
    
    说明:

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

    请尝试以下操作:

    ^[^-]*-?[^-]*$
    
    [^-]
    是非连字符。

    请尝试以下操作:

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

    [^-]
    是非连字符。

    看起来像SO中的正则表达式突击测验。如果可以在代码隐藏中执行:myInput.Count(x=>x='-')>1?:)(当然只是开玩笑…:-)…之前我们有自定义验证器,但作为迁移的一部分,我们正在替换所有自定义验证器。看起来像是SO中的正则表达式突击测验。如果可以在代码隐藏中执行:myInput.Count(x=>x='-')>1?:)(当然只是开玩笑…:-)…之前我们有自定义验证器,但作为迁移的一部分,我们正在替换所有自定义验证器。只是测试了它。在这种情况下,连字符不需要转义。@p.s.w.g:好:)+1表示您已经测试过了!刚刚测试过。在这种情况下,连字符不需要转义。@p.s.w.g:好:)+1表示您已经测试过了!