regex - 正则表达式格式长度
问题描述
所以我在powershell中写了一个脚本(不是重点),我想匹配一个特定的字符串格式,但是字符串可以比我的格式长,我不希望它匹配。我希望它只有一定的长度。
例如。我希望我的格式匹配[AZ]{3}[TLZ]\d{5}但仅此而已。例如,STSZ43332 是匹配的,但我不想匹配 STSZ433321。我知道我可以在检查长度之前运行 if 语句,但想知道它是否可能在正则表达式中。
如果重要,这是我在 powershell 中的 If 语句。
If ($Name -match "[A-Z]{3}[TLZ]\d{5}") {Write-Host "Found match"}
问题是,如果 $name 比我预期的 9 个字符长(来自正则表达式},如果可以在 $name 中找到正则表达式字符串,它仍然可以返回为真。正如我所说,如果 $name.length 到匹配 $name 只有 9 但想知道正则表达式是否也有这样做的方法。
谢谢
解决方案
在正则表达式中,您可以使用锚点,它不匹配任何特定字符,但确保您的匹配边界在给定位置。在这种情况下,您可以使用行首锚^
和行尾锚$
,这样就没有其他字符的空间了。因此,您的最终表达式应如下所示:
^[A-Z]{3}[TLZ]\d{5}$
除非匹配的开头位于字符串的开头并且匹配的结尾位于字符串的末尾,否则这不会匹配。如果其中有任何多余的字符,则不会出现这种情况,因此匹配将失败。
推荐阅读
- c++ - 使用 std::swap 在 QListWidget 中交换项目
- django - 我可以在 Celery 任务中使用请求库吗?
- python - 分类指标无法处理连续目标和二元目标的混合
- c++ - 如何在 boost::math 中禁用 long double?
- oat++ - 如何在 oat++ 端点上使用 MIME 代码进行响应
- ruby - 无法在 mac 上安装 RubyGems:因为不支持 Objective-C 垃圾回收
- github - 如何在 GitHub Actions 中使用最新版本标签?
- php - 在控制器 Symfony 中排除字符串 url
- fastify - 如何在 Ajv/Fastify 中设置需要所有属性?
- javascript - 我想删除默认箭头并将我的放在图像上而不是下拉菜单中的箭头