Регулярное выражение Powershell, соответствующее различным серийным номерам - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь создать регулярное выражение, которое будет соответствовать серийным номерам для различных устройств. совпадение представляет собой сочетание букв и цифр длиной не менее 6 символов. Я ужасен с регулярным выражением, все, что я смог заставить работать, - это $Serial -match '\d\D', но это не проверяет длину. Я пробовал '\d{0-6}\D{0-6}', но совпадений нет. Может ли кто-нибудь предоставить подходящее регулярное выражение для серийных номеров. Они относятся к разным типам устройств и имеют немного разный формат. Вот список примеров:

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

Ответы [ 2 ]

3 голосов
/ 05 августа 2020

Вы можете использовать следующее:

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

[] обозначает класс символов. Внутри у вас есть диапазон символов от A до Z и от 0 до 9. {6,} 6 или более раз соответствует текущему совпадению (0–9 или AZ). Обычно A-Z чувствителен к регистру в регулярных выражениях, а оператор -match - нет. Если вам нужны совпадения только в верхнем регистре, я рекомендую изменить его на -cmatch, вариант с учетом регистра.

0 голосов
/ 05 августа 2020

Если вас не беспокоит чувствительность к регистру или символы подчеркивания, вот еще более короткая версия

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

Это не подходит, если у вас могут быть символы подчеркивания в строках, которые вам нужно исключить.

Кроме того, я рекомендую такие сайты, как https://regex101.com/, для тестирования ваших регулярных выражений. Вы можете видеть результаты в режиме реального времени, а на странице есть полезные руководства по синтаксису.

...