2
我試圖驗證用戶名輸入。應該有姓和名(所有字母),每個字母都以大寫字母開頭,兩個名字之間有一個空格,根本就沒有其他字符。以下是我的示例代碼:正則表達式精確匹配 - 第一個和最後一個空格之間的空格
my $name = "John Smith";
if ($name !~ /([A-Z]{1})([a-z]+)(\s)([A-Z]{1})([a-z]+){1}/g){
print "No Match!";
}else{
print "Match!";
}
問題是,這與「John Smith」或「John Smith Joe」匹配。我沒有看到我的模式允許在第二個名字中的最後一組小寫字母之後有什麼,但它確實如此。我錯過了什麼?
謝謝!
你應該解釋爲什麼他的方法不能正常工作以及你如何增加^ $修復它。但是,好的回答 – sshashank124 2014-11-08 20:01:28
@ sshashank124只是增加詳細的答案。感謝您的指導:) – nu11p01n73R 2014-11-08 20:04:16
我並不是說要破壞派對,但請注意有些名字不符合您的模式,例如「Paul McCartney」或某些蘇格蘭名字。另外,當允許國際用戶時,您可能不得不提防utf8。 – bytepusher 2014-11-08 20:13:43