java - 正则表达式,不允许两个连续的特殊字符,也不允许在开头和结尾

标签 java regex

我正在寻找一个正则表达式来字符串

  • 仅包含A-Z a-z 0-9 _-。
  • 不能以_-开头/结尾。
  • 不包含连续的特殊字符或其组合
  • 最大36个长度,最小1个

  • 右侧
    abcd-efgH
    1
    a
    123
    abc
    abc-asd-123-asd_asd.asd
    
    错误:
    -
    abc-_asd
    abc.
    abc.-asd
    123123-123123-ads--asd
    091-asdsad---
    
    我四处张望,得到了这个:-
    /^(?!.*[^\na-z0-9]{2})(?=.*[a-z0-9]$)[a-z0-9].*$/gim
    
    但这允许所有特殊字符,而不仅仅是我检查过的3个字符

    最佳答案

    您可以将此正则表达式与3个前瞻一起使用:

    ^(?![-_.])(?!.*[-_.]{2})(?!.*[-_.]$)[-\w.]{1,36}$
    
    RegEx Demo
    RegEx详细信息:
  • ^:启动
  • (?![-_.]):负向超前以在开始
  • 时禁止[-_.]
  • (?!.*[-_.]{2}):负向超前禁止在任何地方
  • 禁止2个连续[-_.]
  • (?!.*[-_.]$):负向超前以禁止
  • 结尾处的[-_.]
  • [-\w.]{1,36}:匹配一个[-a-zA-Z0-9_.]字符,最小值:1,最大值:36
  • $:结束
  • 关于java - 正则表达式,不允许两个连续的特殊字符,也不允许在开头和结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63057698/

    相关文章:

    c# - 正则表达式除某些字符外的任何字符

    Java挂了几秒,但是在gc log中没有发现gc pause

    黎巴嫩电话号码的 PHP 正则表达式

    regex - 原子分组的失败速度更快是什么意思

    c - 标准 C 正则表达式库匹配错误

    javascript - 正则表达式匹配整个单词,包括空格和句号

    java - JTextField 焦点

    java - 使用 ActorSystem 和 Guice 时停止时出现异常

    java - java核心的Iterator违反单一职责原则

    Java:如何将文本文件的内容重定向到java文件作为键盘输入