我有这段代码:
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并且还不知道我的错误:小号
答案 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]+$
表示该字符串应仅包含小写字符。
因此,如果字符串不仅由大写字母或小写字符组成,则字符串包含它们。