4

私はこのコードを持っています:

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 を持っていますが、minusculas y MAYUSCULAS (MIXED) はありません。

4

3 に答える 3

6
new RegExp("[A-Z]")

のいずれかの文字cadenaが大文字の場合に一致します。すべての文字が大文字の場合に一致させるには、次を使用します

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

は最初^から開始するように$強制し、 は最後に終了するように強制し、 は最後の+間に が 1 つ以上あることを保証し[A-Z]ます。

于 2012-10-05T12:10:52.713 に答える
3

^[a-z]+$正規表現パターン、^[A-Z]+$およびを使用したかったと思います^[a-zA-Z]+$

正規表現では、キャレット^は文字列の最初の文字の前の位置に一致します。同様に$、文字列の最後の文字の直後に一致します。さらに、+1 つ以上のオカレンスを意味します。

リストされている他の文字が文字列に含まれないようにする場合は、パターンで^andを使用する必要があります。$


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';

このコードをここでテストします。

于 2012-10-05T12:11:18.423 に答える
2

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>+、少なくとも 1 つの何かを意味します。

そうは言っても、

^[A-Z]+$文字列には大文字のみを含める必要があることを意味します。

^[a-z]+$文字列には小文字のみを含める必要があることを意味します。

したがって、文字列が大文字または小文字のみで構成されていない場合、文字列には両方が含まれます。

于 2012-10-05T12:17:11.190 に答える