首页 > 解决方案 > 给定参数的正则表达式

问题描述

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

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

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

标签: regex

解决方案


您可以使用

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

查看正则表达式演示

细节

  • ^- 字符串的开始
  • [a-zA-Z]- 一个 ASCII 字母
  • (?=.{5,15}$)-从当前位置到字符串末尾需要 5 到 15 个字符的正向前瞻
  • [^-]*- (一个否定的字符类)0+个字符,而不是-
  • (?:-[^-]+)?- 一个可选的非捕获组,匹配 1 次或 0 次重复
    • -- 一个连字符
    • [^-]+- 1+ 字符以外-
  • $- 字符串结束

推荐阅读