有以下5个示例,而我尝试查找3、4、5,而排除1,2。
我使用的当前表达式是:
(?!(\w*[A-Z]{2,}-[a-z]+\w*|\w*[a-z]+-[A-Z]{2,}\w*))(\w*-?[A-Z]{2,}-?\w*)
我进行了很多搜索,发现有些人说这种方式不是regex擅长的。我有什么解决方案或改进措施可以摆脱abc-ABC。
感谢任何帮助或意见。
据我所知,如果字符串中包含连字符,且连字符开头是小写字母,再后面是大写字母,则该字符串将被拒绝;反之亦然;否则他们将被接受。如果是这样,则可以使用以下正则表达式。
^(?!.*(?:[a-z]-[A-Z]|[A-Z]-[a-z]))
正则表达式引擎执行以下操作。
^ # match beginning of line
(?! # begin a negative lookahead
.* # match 0+ characters
(?: # begin a non-capture group
[a-z]-[A-Z] # match a lc letter, '-', uc letter
| # or
[A-Z]-[a-z] # match an uc letter, '-', lc letter
) # end non-capture group
) # end negative lookahead