我有一个文本框,想要将模式匹配为
[a-z]{1}[A-Z]{1}[0-9]{1}
var x=/^[a-z]{1}[A-Z]{1}[0-9]{1}$/;
if(!x.test(document.getElementById('name').value))
{
alert("enter the correct format");
return false;
}
仅适用于值:aA1
如果该怎么做 这些值可以随机输入 像aA1,Aa1,1aA?
答案 0 :(得分:4)
要以任何顺序匹配一组字符串,您可以使用前瞻。像这样:
/^(?=.*a)(?=.*b)(?=.*c)[abc]{3}$/.test('cab')
语法(?= what)是一个积极的前瞻,这意味着它会在不提升匹配器位置的情况下检查匹配。因此,每个组在字符串中的任何位置查找您的字符。最后一部分[abc]{3}
确保字符串中不存在其他字符,并且正好有三个字符。如果多个都可以,请改用[abc] +。
有关更详细的参考,请参阅http://www.regular-expressions.info/lookaround.html。
答案 1 :(得分:1)
你可以使用怪物表达
/$([a-z][A-Z][0-9])|([A-Z][a-z][0-9])|([0-9][a-z][A-Z])|([a-z][0-9][A-Z])|([A-Z][0-9][a-z])|([0-9][A-Z][a-z])^/
但我不确定这是一种有效或可扩展的解决方案。
答案 2 :(得分:1)
试试这个
/^([a-z]{1}[A-Z]{1}[0-9]{1}|[A-Z]{1}[a-z]{1}[0-9]{1}|[0-9]{1}[a-z]{1}[A-Z]{1})$/
第一个表达式[a-z]{1}[A-Z]{1}[0-9]{1}
处理模式: aA1
第二次出现[A-Z]{1}[a-z]{1}[0-9]{1}
处理模式: Aa1
第三个表达式[0-9]{1}[a-z]{1}[A-Z]{1}
处理模式: 1aA