[英]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.