我对PowerShell和regex的编程很新。善良的灵魂可以向我解释为什么以下不起作用?
while($true) {
$Name = Read-Host "Please enter your firstname and lastname"
if($Name -match "[^a-zA-Z-]" -and $Name -match " ") {
break;
} else {
Write-Host -ForegroundColor red "You didn't enter a valid name! Please try again."
}
}
我希望我的代码能够继续询问first和surname,只要它具有非a-z的字符和 - 以及其中的空格。我在这里采取了错误的做法吗?
Woops,应该提到错误。我可以添加数字和特殊符号(例如>< \ ^€等)。当我没有在$ name字符串中添加空格时,它只给出了else中的错误答案 0 :(得分:0)
如果你想匹配一个只有小写和大写拉丁字符和连字符的字符串,这就是你想要的:
^[a-z -]+$
如果你想要连续阻止多个空格,你必须做一些更复杂的事情:
^(?:[a-z-]+ ?)+$
虽然我并不像我想的那样熟悉Bash,所以这可能不完全准确。
如果在该字符类中有任何字符(因为你用^
否定它),你检查了什么,只有在这种情况下才返回true。
答案 1 :(得分:0)
如前所述,您需要将+限定符添加到角色类以匹配一个或多个字符。您还需要添加表达式来捕获姓氏。
new Date()