0

我有一个文本框,想将模式匹配为 [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 一样随机输入怎么办?

4

3 回答 3

4

要以任何顺序匹配一组字符串,您可以使用前瞻。像这样的东西:

/^(?=.*a)(?=.*b)(?=.*c)[abc]{3}$/.test('cab')

语法 (?=whatever) 是一个积极的前瞻,这意味着它检查匹配而不推进匹配器的位置。因此,每个组都会在字符串中的任何位置查找您的字符。最后一部分[abc]{3}确保字符串中没有其他字符,并且恰好有三个字符。如果倍数没问题,请改用 [abc]+。

有关更详细的参考,请参阅http://www.regular-expressions.info/lookaround.html

于 2012-08-24T05:27:39.023 回答
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

第二个 epression[A-Z]{1}[a-z]{1}[0-9]{1}处理模式:Aa1

第三个表达式[0-9]{1}[a-z]{1}[A-Z]{1}处理模式:1aA

于 2012-08-24T05:45:48.530 回答
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])^/

但我不确定这是一个高效或可扩展的解决方案。

于 2012-08-24T05:18:48.577 回答