如何在TCL中验证输入字符串是否包含数字(0-9)和多个。(特殊字符)

时间:2017-06-22 07:58:15

标签: tcl

我有三个不同的条目" 10576.53012.46344.35174" ," 10"和#34; Doc-15"在foreach循环中。在这3个条目中,我想要10576.53012.46344.35174。如何验证当前字符串是否包含多个。和数字。

我是TCL新手,需要建议

1 个答案:

答案 0 :(得分:0)

这是一种非常适合正则表达式的任务。

字符串10576.53012.46344.35174由RE匹配:^\d{5}(?:\.\d{5}){3}$虽然你可能想要一些不太严格的东西(例如,每组的位数更灵活 - {{1} } - 或5 - .之后的群组数量。

使用3命令测试字符串是否与正则表达式匹配:

regexp

另一种方法是if {[regexp {^\d{5}(?:\.\d{5}){3}$} $theVarWithTheString]} { puts "the regular expression matched $theVarWithTheString" } split字符串,并检查每个组是否符合要求:

.

我非常喜欢自己的正则表达式方法(偶尔会有set goodBits 0 set badString 0 foreach group [split $theVarWithTheString "."] { if {![string is integer -strict $group]} { set badString 1 break } incr goodBits } if {!$badString && $goodBits == 4} { puts "the string was OK" } 的帮助)。编写非RE验证器可能具有挑战性,并且往往需要大量代码。