正则表达式允许单个连字符和下划线但不在字符串的开头或结尾

时间:2013-05-29 22:26:46

标签: c# regex

我修改了这个正则表达式以允许下划线,连字符,字母和数字。 我试图进一步修改它,以便它具有以下属性:

  1. 仅允许数字,字母
  2. 允许在第一个和最后一个字符之间的任何位置使用下划线或连字符
  3. 无法 下划线 连字符 开头(仅限介于两者之间)第一个和最后一个字符)。
  4. 这就是我现在所拥有的:

    ^[a-zA-Z0-9_-]*$
    

2 个答案:

答案 0 :(得分:5)

试试这个:

^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$

或者这个,这将简单地确保字符串不以连字符或下划线开头:

^[a-zA-Z0-9][a-zA-Z0-9_-]*$

答案 1 :(得分:1)

^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9_-]*[a-zA-Z0-9])$

三种可能中的任何一种:

  • [a-zA-Z0-9]
  • [a-zA-Z0-9][a-zA-Z0-9]
  • [a-zA-Z0-9][a-zA-Z0-9_-]*[a-zA-Z0-9]