我需要一个正则表达式来验证以下条件中的字符串。JavaScript中的正则表达式(正则表达式)
- 从逐字文本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})"))
{
//...
}
您需要添加''^到开始和'$'到最后。另外,这不是你的问题,因为浏览器在这种情况下自动处理它,但是你应该在'/ myexpression /'中包装正则表达式而不是''myexpression'': – Dave 2013-05-05 16:18:34
:-)我从js移动到java时遇到了相反的麻烦 - 添加'。*'在开始和结束时... – anishsane 2013-05-05 16:22:58