正则表达式包含至少一个大写字母且不包含至少一个下划线

Regex contains at least one uppercase letter AND NOT contains at least one underscore

我需要一个至少包含一个大写且不包含任何下划线的正则表达式,我目前的尝试是:

(?=.*[A-Z_])

我试过这样的字符串: example-chocolate-easter-egg-170g_349-85428671-ACCESSIBLEEASTEREGG ,因为这个字符串包含 _ 和至少一个大写字母,所以应该是错误的。但是我上面的正则表达式仍然给出正确的...它应该是错误的...

理想情况下,example-chocolate-easter-egg-170g349-85428671-ACCESSIBLEEASTEREGG,这是真的,因为它不包含 _,至少包含一个大写字母。

这个也应该是假的,因为它没有大写字母:-chocolate-easter-egg-170g349-85428671-accessibleeasteregg

有什么建议吗?正则表达式代码示例将非常有帮助 谢谢

使用

^(?=.*[A-Z])(?!.*_).+

参见 proof

匹配包含大写字符 - (?=.*[A-Z])、不包含下划线 - (?!.*_) 且不为空 - .+ 的字符串。删除 .+ 或使用 .* 以支持空输入。