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



>我有一个正则表达式,允许在两者之间带有连字符或下划线的字符串。但我无法让它在开头或结尾不允许

。这是我的正则表达式:

^(?!.*__.*)(?!.*--.*)[a-zA-Z0-9_-]*$

这有效,除了它允许在开始或结束时-_。 这不应该有。

附加要求:

  • 字符串中的任何位置都不允许使用__--(但_--_都允许(
  • _-外,只允许使用字母数字字符

这个怎么样?

^[^_-].*[^_-]$

只有一个痛点:根本不允许长度为 1 个字符的字符串。这可能会解决它:

^([^_-](.*[^_-])?)?$

对于字母数字字符的未记录要求:

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

相关内容

最新更新