我有一个非常简单的正则表达式..但是当我最后添加一个额外的字符时,它总是返回true?
这是正确的:
'sydt1sn_z1c1' -match "([a-zA-Z]{3}t[1|2][a-zA-Z]{2}_([a-zA-Z][0-9]){2})"
True
这也是匹配。我不想要它。
'sydt1sn_z1c1n' -match "([a-zA-Z]{3}t[1|2][a-zA-Z]{2}_([a-zA-Z][0-9]){2})"
True
答案 0 :(得分:1)
^([a-zA-Z]{3}t[1|2][a-zA-Z]{2}_([a-zA-Z][0-9]){2})$
只需添加锚点即可。
^
匹配行的开头。
$
匹配该行的结尾。
由于您有$
,因此不会将字符串与额外字符匹配。
答案 1 :(得分:0)
您也可以简化表达:
\b([a-z]{3}t[1|2][a-z]{2}_([a-z][0-9]){2})\b
-match运算符不区分大小写
或者如果要验证整个字符串:
\A([a-z]{3}t[1|2][a-z]{2}_([a-z][0-9]){2})\z