[英]Regular expression (regex) in JavaScript
我需要一个可以根据以下条件验证字符串的正则表达式。
因此,以下正则表达式可在Java中使用。
(?!.*__.*)(?!^ROLE_ADMIN$)(?!.*_$)(ROLE_[A-Z_]{1,15})
但是在JavaScript中,像ROLE_ADMIN_s
( ROLE_ADMIN_s
的结尾处的s
)之类的字符串被视为实际上不应该是的有效字符串。 允许的最大字符数(20)也未正确验证。
我正在使用match()
函数,
if($("#txtAuthority").val().match("(?!.*__.*)(?!^ROLE_ADMIN$)(?!.*_$)(ROLE_[A-Z_]{1,15})"))
{
//...
}
Java的matches
方法期望该模式匹配整个字符串,而JavaScript的match
方法则是查找任何match方法,因为它足以在字符串内的某个位置找到该模式。
"ROLE_ADMIN_s".match(/(?!.*__.*)(?!^ROLE_ADMIN$)(?!.*_$)(ROLE_[A-Z_]{1,15})/)[0] === "ROLE_ADMIN_"
如果您希望JavaScript的match
行为类似于Java的matches
行为,请在字符串的开始( ^
)和结束( $
)处使用锚点:
/^(?!.*__.*)(?!^ROLE_ADMIN$)(?!.*_$)(ROLE_[A-Z_]{1,15})$/
这将在您的字符串上失败:
"ROLE_ADMIN_s".match(/^(?!.*__.*)(?!^ROLE_ADMIN$)(?!.*_$)(ROLE_[A-Z_]{1,15})$/) === null
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.