【问题标题】:Powershell regex matching various Serial numbersPowershell 正则表达式匹配各种序列号
【发布时间】:2020-11-25 03:59:41
【问题描述】:

我正在尝试创建匹配各种设备序列号的正则表达式。 匹配是至少 6 个字符长的字母和数字的组合。 我对正则表达式很糟糕,我能够开始工作的只是$Serial -match '\d\D',但这并不能验证长度。我试过'\d{0-6}\D{0-6}',但没有匹配。 任何人都可以为序列号提供适当的正则表达式。这些来自不同的设备类型,并且格式都略有不同。以下是示例列表:

1VWPGF1
22P342Y4
2M251434B9
2TK95004x4
5CG934322D
8CG4322TVF
BRJ9323XR5
CND8432NVJ
MXL64322Q4
MXL64324MV
PF1CZ0EF
USE147SX0Y
USH7432L1W

【问题讨论】:

  • $serial -match '[a-z0-9]{6,}'

标签: regex powershell numbers match


【解决方案1】:

您可以使用以下内容:

$Serial -match '[A-Z0-9]{6,}'

[] 表示一个字符类。里面有一系列字符 AZ09{6,} 匹配当前匹配的 6 次或更多次(0-9 或 A-Z)。通常A-Z 在正则表达式中区分大小写,但-match 运算符不区分大小写。如果您只想要大写匹配,我建议更改为-cmatch,区分大小写的变体。

【讨论】:

  • 谢谢,看起来不错。我只需要一些东西来确保有人没有指定一般的东西,比如工作站或主机名,这样应该可以工作。
【解决方案2】:

如果您不担心区分大小写或下划线,这里有一个更短的版本

$serial -match '[\w]{6,}'

如果您需要排除的字符串中可能包含下划线,则不适合。

另外,我推荐像 https://regex101.com/ 这样的网站来测试你的正则表达式。您可以实时查看结果,并且页面上有有用的语法指南。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 2014-09-10
    • 2011-08-18
    • 1970-01-01
    相关资源
    最近更新 更多