给定参数的正则表达式

时间:2018-10-10 19:59:59

标签: regex

我最近用正则表达式进行了测试,但是我不熟练。 我尝试为模式写一些东西:

  • 字符串必须包含6-16个字符
  • 字符串只能从char开始
  • 字符串可以包含任何字符,但只能包含“-”一次
  • 字符串不能以“-”结尾

我写了类似"(^[a-zA-Z]).(/w{6,16}).*(?<!-)$"这样的东西,当然这是不正确的,也不完整。

我对正确的解释很感兴趣,如果您认为应该的话,您可以否决我的问题。

1 个答案:

答案 0 :(得分:1)

您可以使用

^[a-zA-Z](?=.{5,15}$)[^-]*(?:-[^-]+)?$

请参见regex demo

详细信息

  • ^-字符串的开头
  • [a-zA-Z]-ASCII字母
  • (?=.{5,15}$)-正数lookahead,需要5到15个字符,从当前位置开始直到字符串结尾
  • [^-]*-(a negated character class)除-以外的0多个字符
  • (?:-[^-]+)?-可选的non-capturing group,与1个或0个重复匹配
    • --连字符
    • [^-]+-除-以外的1个以上的字符
  • $-字符串结尾