gpt4 book ai didi

regex - 为什么这个 Swift RegEx 匹配 "e1234"?

转载 作者:行者123 更新时间:2023-11-28 16:17:54 26 4
gpt4 key购买 nike

这是正则表达式:

    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”,它仍会返回“legal”。我希望它返回“不合法”。我在这里错过了什么吗?顺便说一句,注意正则表达式末尾的“$”。三位数字应出现在字符串的末尾。

如果不是很清楚,字符串的来源是一个文本编辑框。

最佳答案

您的模式仅锚定在末尾,并匹配空字符串。因此,只要将您的模式匹配为末尾的空字符串,任何字符串都可以成功匹配。

在前面添加一个 ^ 以将其也固定在该侧。

关于regex - 为什么这个 Swift RegEx 匹配 "e1234"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38887084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com