reg表达式匹配额外的字符

时间:2014-09-05 10:54:14

标签: regex powershell

我有一个非常简单的正则表达式..但是当我最后添加一个额外的字符时,它总是返回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

2 个答案:

答案 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