这是正则表达式:
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”,它仍然会返回“合法”。我希望它回归“不合法”。我在这里错过了什么吗?顺便说一句,请注意正则表达式末尾的“$”。这三个数字应出现在字符串的末尾。
如果没有立即清除,则字符串的来源是文本编辑框。
答案 0 :(得分:1)
您的模式仅锚定在末尾,并匹配空字符串。所以任何字符串都会成功匹配,只需在最后将模式匹配为空字符串即可。
在前面添加^
以将其固定在那一侧。