Javascript - RegEx大写和LowerCase和混合

时间:2012-10-05 12:06:39

标签: javascript regex

我有这段代码:

var cadena = prompt("Cadena:");

document.write(mayusminus(cadena));

function mayusminus(cad){
    var resultado = "Desconocido";

    if(cad.match(new RegExp("[A-Z]"))){
        resultado="mayúsculas";
    }else{
        if(cad.match(new RegExp("[a-z]"))){
            resultado="minúsculas";
        }else{
            if(cad.match(new RegExp("[a-zA-z]"))){
            resultado = "minúsculas y MAYUSCULAS";
            }
        }
    }
    return resultado;
}

我总是 mayusculas minusculas ,永远不会减去MAYUSCULAS (MIXED),我正在学习regexp并且还不知道我的错误:小号

3 个答案:

答案 0 :(得分:3)

new RegExp("[A-Z]")
cadena中的任何字符为大写字母时,

匹配。 要在所有字符都是大写时匹配,请使用

new RegExp("^[A-Z]+$")

^强制它从头开始,$强制它在结束时结束,而+确保在结尾之间有一个或多个{{} 1}}。

答案 1 :(得分:2)

我相信你想使用正则表达式模式^[a-z]+$^[A-Z]+$^[a-zA-Z]+$

在正则表达式中,插入符^匹配字符串中第一个字符之前的位置。同样,$匹配字符串中的最后一个字符。另外,+表示一次或多次出现

如果您想确保字符串中没有其他列出的字符,则必须在模式中使用^$


的JavaScript

s = 'tEst';
r = (s.match(new RegExp("^[a-z]+$")))    ? 'minúsculas' :
    (s.match(new RegExp("^[A-Z]+$")))    ? 'mayúsculas' :
    (s.match(new RegExp("^[a-zA-Z]+$"))) ? 'minúsculas y mayúsculas' :
                                           'desconocido';

测试此代码here

答案 2 :(得分:1)

我们说cad是foo

// will return false
if (cad.match(new RegExp("[A-Z]"))) {
    resultado="mayúsculas";
// so will go there
} else {
    // will return true
    if (cad.match(new RegExp("[a-z]"))) {
        // so will go there
        resultado="minúsculas";
    } else {
        if (cad.match(new RegExp("[a-zA-z]"))) {
            resultado = "minúsculas y MAYUSCULAS";
        }
    }
}

现在,让我们说cad是FOO

// will return true
if (cad.match(new RegExp("[A-Z]"))) {
    // so will go there
    resultado="mayúsculas";
} else {
    if (cad.match(new RegExp("[a-z]"))) {
        resultado="minúsculas";
    } else {
        if (cad.match(new RegExp("[a-zA-z]"))) {
            resultado = "minúsculas y MAYUSCULAS";
        }
    }
}

最后,让我们说cad是FoO

// will return true
if (cad.match(new RegExp("[A-Z]"))) {
    // so will go there
    resultado="mayúsculas";
} else {
    if (cad.match(new RegExp("[a-z]"))) {
        resultado="minúsculas";
    } else {
        if(cad.match(new RegExp("[a-zA-z]"))) {
            resultado = "minúsculas y MAYUSCULAS";
        }
    }
}

如您所见,永远不会访问嵌套的else

你能做的是:

if (cad.match(new RegExp("^[A-Z]+$"))) {
    resultado="mayúsculas";
} else if (cad.match(new RegExp("^[a-z]+$"))) {
    resultado="minúsculas";
} else {
    resultado = "minúsculas y MAYUSCULAS";
}

说明:

^表示从字符串开始的

$表示到字符串的末尾,

<anything>+表示至少一件

那就是说,

^[A-Z]+$表示该字符串应仅包含大写字母

^[a-z]+$表示该字符串应仅包含小写字符

因此,如果字符串不仅由大写字母或小写字符组成,则字符串包含它们。