我需要一个可以验证以下条件中的字符串的正则表达式。
- 从逐字文本 ROLE_ 开始。
- 只允许使用大写字母和取消划线的组合。
- 必须包含最少 6 个字符,最多 20 个字符。
- 不允许使用两个或多个连续的下划线。
- 不允许使用前导和/或尾随下划线。
- 不允许使用文本 ROLE_ADMIN。
因此,以下正则表达式适用于 Java。
(?!.*__.*)(?!^ROLE_ADMIN$)(?!.*_$)(ROLE_[A-Z_]{1,15})
但是在 JavaScript 中,像ROLE_ADMIN_s
(s
在小写的末尾) 这样的字符串被视为实际上不应该的有效字符串。最大允许字符 (20) 也未正确验证。
我正在使用match()
类似的功能,
if($("#txtAuthority").val().match("(?!.*__.*)(?!^ROLE_ADMIN$)(?!.*_$)(ROLE_[A-Z_]{1,15})"))
{
//...
}