首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript大写和LowerCase及混合

Javascript大写和LowerCase及混合
EN

Stack Overflow用户
提问于 2012-10-05 12:06:38
回答 3查看 36.2K关注 0票数 4

我有这样的代码:

代码语言:javascript
复制
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;
}

我总是有mayusculasminusculas,从来没有minusculas y MAYUSCULAS (混合),我正在学习regexp,还不知道我的错误:S。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-05 12:10:52

代码语言:javascript
复制
new RegExp("[A-Z]")

cadena中的任何字符都是大写字母时匹配.若要匹配所有字符都是大写,请使用

代码语言:javascript
复制
new RegExp("^[A-Z]+$")

^强制它在开始时开始,$强制它在末尾结束,+确保在结束之间有一个或多个[A-Z]

票数 6
EN

Stack Overflow用户

发布于 2012-10-05 12:11:18

我相信您希望使用regex模式^[a-z]+$^[A-Z]+$^[a-zA-Z]+$

在regex中,插入符号^匹配字符串中第一个字符之前的位置。类似地,$在字符串中的最后一个字符之后匹配。另外,+指的是一个或多个事件。

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

JavaScript

代码语言: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';

测试此代码这里

票数 3
EN

Stack Overflow用户

发布于 2012-10-05 12:17:11

假设cad是foo

代码语言:javascript
复制
// 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

代码语言:javascript
复制
// 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

代码语言:javascript
复制
// 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从未被访问过。

你能做的是:

代码语言:javascript
复制
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]+$意味着字符串应该只包含低胁迫的字符。

因此,如果字符串不只是由超感知或低胁迫的字符组成,则字符串包含这两个字符。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12745930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档