JavaScript中的正则表达式(regex)
Regular expression (regex) in 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})"))
{
//...
}
Java的matches
方法期望模式匹配整个字符串,而JavaScript的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
相关文章:
- 将po-box javascript正则表达式转换为c#regex
- regex look-behind:无效的正则表达式:/(?<=.)S+$/:无效的组
- 将Javascript正则表达式模式转换为C++std::regex的规则
- 用第一个匹配的正则表达式覆盖第二个匹配的regex
- 使用正则表达式(Javascript Regex)验证表单
- Javascript 将 “rgb(xx,xx,xx)” 与正则表达式 regEx 匹配
- Regex for JavaScript 正则表达式
- jQuery 正则表达式 (regex).
- /g 从 JavaScript 正则表达式到 groovy regex 的转换
- Regex-正则表达式模式在URL GET参数上失败
- Javascript Regex-如何基于正则表达式将字符串拆分为数组
- 正则表达式RegEx挑战
- Regex查找正则表达式标志和搜索模式
- 正则表达式(regex): /W带连字符(javascript)
- 如何从json使用正则表达式(regex)在php中的内容
- Javascript URL Regex 使用URL检查正则表达式
- JavaScript中的正则表达式(regex)
- 想要对我的RegEx(正则表达式)进行更多分类
- REGEX(正则表达式)用于验证html字符串的加粗标记
- REGEX -正则表达式模式匹配