2013-06-27 4 views
0

У меня есть код ниже, в котором я пытаюсь найти специальные символы & длину строки. Если условие терпит неудачу, примечание об ошибке должно быть записано на хост. Я использую Powershell 2.0. Код проверяет длину строки, но не может проверить какой-либо специальный символ. Пожалуйста помоги.Поиск специальных символов в строке в powershell

$chk=$user_logon.Output_Value 
if($chk.length -gt 64 -or $chk -notmatch '[^a-zA-Z0-9]') 
{ 
    write-host "Error - The Value ""$chk"" is greater than 64 bits or it contains a special character" -BackgroundColor "White" -ForegroundColor "Red";  
} 

Я также попробовал -

if($chk.length -gt 64 -or $chk -notmatch "^[a-zA-Z0-9\s]+$") 

, который работал. Но я хотел бы иметь условие, которое проверяет все специальные символы, запрещающие подчеркивание «_», которое может быть частью $ chk.

Спасибо.

ответ

1

Вам нужно заменить $chk -notmatch '[^a-zA-Z0-9]' с $chk -match '[^a-zA-Z0-9]'

+0

Спасибо. Он решает мой случай, когда он соответствует строке без алфавитов или цифр. Я также с нетерпением ожидал случая, когда я мог бы сопоставить строку без специальных символов, запрещающих нижний регистр. – 0nir

+0

Дело - if ($ chk.length -gt 64-or $ chk -match "[^ a-zA-Z0-9_]"). Не уверен, что это лучший подход. Благодарю. – 0nir