1

我有一个变量,我需要检查它是否只有大写字母。例如:

ABCDEF 应该匹配

但是 ABcdef 不应该

我该怎么做?

4

2 回答 2

3

使用 findstr 和 errorlevel。请参见下面的示例。请注意,您可能希望作为模式工作,但这里"^[A-Z]*$"没有提到。

%X%还要注意字符和字符之间没有空格|,这很重要。

C:\>SET X=ABCDEF
C:\>SET Y=ABcdef
C:\>echo %X%| findstr "^[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*$"
ABCDEF

C:\>echo %errorlevel%
0

C:\>echo %Y%| findstr "^[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*$"

C:\>echo %errorlevel%
1
于 2012-10-04T16:21:22.697 回答
2

lessthanideal 有一个解决方案,可以严格验证字符串是否只包含大写字母。但我想知道是否应该允许标点符号和/或数字?如果是这样,那么最好检查是否存在小写字母。

此外,您不需要查看 FINDSTR 命令的输出,因此可以将其重定向为 NUL。并且您可以使用&&and||运算符来检测成功和失败。

我正在使用echo(,以便在变量未定义而不是ECHO is on.. 大多数人使用echo.,但这种形式在某些情况下可能会失败,并且echo(永远不会失败。

@echo off
setlocal
set x=ABC_123
set y=AbC_123
echo(%x%|findstr /v "[abcdefghijklmnopqrstuvwxyz]" >nul && (
  echo %x% is Valid
) || (
  echo %x% is Invalid
)
echo(%y%|findstr /v "[abcdefghijklmnopqrstuvwxyz]" >nul && (
  echo %y% is Valid
) || (
  echo %y% is Invalid
)
于 2012-10-04T17:33:50.417 回答