0
這裏的正則表達式:爲什麼這個Swift RegEx匹配「e1234」?
let legalStr = "(?:[eE][\\+\\-]?[0-9]{1,3})?$"
這裏的調用:
if let match = sender.stringValue.rangeOfString(legalStr, options: .RegularExpressionSearch) {
print("\(sender.stringValue) is legal")
}
else {
print("\(sender.stringValue) is not legal")
}
如果鍵入的垃圾,如 「ABCD」 是回報非法串。 如果我輸入類似「e123」的東西,它會返回合法的字符串。 (注意空字符串也是合法的。) 但是,如果我鍵入「e1234」,它仍然返回「合法」。我希望它返回「不合法」。我在這裏錯過了什麼嗎?順便說一句,請注意正則表達式末尾的「$」。三位數字應出現在字符串的末尾。
如果沒有立即清楚,字符串的來源是一個文本編輯框。
請注意,刪除尾部「?」導致代碼按預期工作,儘管它不允許在那一點上出現空字符串。 – rawhide