如何用Tcl regexp校验字符串是否仅含小写字母?
Tcl regexp 校验全小写字符串的正确写法
原代码的问题
- Tcl 的
regexp命令不需要用/包裹正则表达式,也不支持g修饰符,这是JavaScript等语言的语法,Tcl直接写正则内容即可。 ^[a-z]$仅能匹配单个小写字母,无法匹配长度大于1的全小写字符串——^匹配字符串开头,$匹配结尾,中间的[a-z]只能匹配一个字符。
正确的校验写法
要确保输入字符串仅包含小写字母(至少1个字符),使用正则^[a-z]+$,其中+表示匹配前面的小写字母至少一次。如果允许空字符串,把+换成*即可。
修正后的代码示例:
set name aAaaaA if { [regexp {^[a-z]+$} $name] } { puts "continue" } else { puts "String is not lowercase. Please enter again" }
检查非小写字母的写法
如果要判断字符串中是否存在非小写字母(大写、符号等),可以用正则[^a-z](匹配任何不是小写字母的字符),示例:
set name aAaaaA if { [regexp {[^a-z]} $name] } { puts "String contains non-lowercase characters. Please enter again" } else { puts "continue" }
内容的提问来源于stack exchange,提问作者ww96jazz
相关产品推荐
相关产品推荐

