創建'交互式'PS腳本時遇到了奇怪的行爲。 啓動時,腳本需要用戶請求的信息。我使用正則表達式來評估的結果,但其中一人剛失敗:與ISE相比,正則表達式在控制檯中的作用不同
$a = ""
while (!$a)
{
Write-Host "`nSome text to instruct the user:"
$Global:a = Read-Host
if($a -notmatch "a1[a-z,A-Z]{6}$")
{
Write-Host "no match!"
}
else {Write-Host "match"}
}
程序等待與隨後6個字母「A1」開頭的字符串。
當我從ISE運行此代碼段時,它的工作方式應該如此。提供測試值a1szvite它返回'匹配',但是當我將它保存爲一個獨立的腳本並在正常的PowerShell窗口中運行它時,它返回'不匹配!',並不斷詢問另一個值,表明$a
不是由於某種原因寫入數據。
所有其他的正則表達式就像一個魅力工作,我有點困惑,這裏有什麼事情。具有相同餵食值的同一行代碼如何返回不同的結果?
我真的認爲這是我的一些小錯誤,我只是不知道它在哪裏。
在此先感謝!
_程序等待一個以'a1'開頭,後跟6個字母的字符串。這不完全正確。你的正則表達式在它結束時會匹配。你也需要開始行錨。 ' 「^ A1 [A-Z,A-Z] {6} $」'。也許你的測試用例偶然匹配。 – Matt
你說得對,我不太清楚$和^可以用來幹什麼,但現在清楚了!謝謝! – SecThor