如何将'aA1'或'Aa1'或'1aA'与正则表达式匹配?

时间:2012-08-24 05:07:14

标签: javascript regex

我有一个文本框,想要将模式匹配为 [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?

3 个答案:

答案 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