用于在 Swift 中为 UITextField 验证 Civil ID 的正则表达式 [重复]
Posted
技术标签:
【中文标题】用于在 Swift 中为 UITextField 验证 Civil ID 的正则表达式 [重复]【英文标题】:Regex for validating the Civil ID in Swift for the UITextField [duplicate] 【发布时间】:2017-05-19 10:45:06 【问题描述】:我有一个格式如下的 UITextfield。这是我们通常在海湾国家看到的公民身份证。所以我需要在 Swift 的 UITextfield 中验证相同的内容。
Civil ID 格式 - NYYMMDDNNNNN 其中 N 一个数字,YY 出生年份的最后两位数字,MM 出生月份,DD 出生日期..
请告诉我如何对此进行验证。
【问题讨论】:
【参考方案1】:这里是一个如何使用正则表达式的例子
var civilID = "4 88 05 20 8787"
var isValidCivilID: Bool
do
// the first 0 (?!00) checks that the numbers should not be all zero and d2 it should have 2 digigts remember it's simple you can make it much complex
// also if you want space in between or not
let regex = try NSRegularExpression(pattern: "\\d1 (?!00)\\d2 (?!00)\\d2 (?!00)\\d2 (?!0000)\\d4", options: .caseInsensitive)
return regex.firstMatch(in: civilID, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, civilID.characters.count)) != nil
catch
return false
如果您没有再次检查格式,则删除正则表达式中的空格,如果civilID正确填写,它将返回true,否则返回false
如果您想在字符串扩展中添加这些检查并阅读更多内容,请参阅此链接Swift Extensions, extending Strings
【讨论】:
我猜它不工作 你是否也尝试在链接中阅读 我认为正则表达式不正确......我得到了错误的回报,而且我需要检查“4 88 05 20 8787”中的 88 05 20 是否采用 yymmdd 格式。 请查看并澄清错误并发布正确答案。 在开头添加这两个斜线,我错过了\\d1
以上是关于用于在 Swift 中为 UITextField 验证 Civil ID 的正则表达式 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Swift 中获取 UITextField 的 .text 属性 - 错误:“实例成员 'textFieldName' 不能用于类型 'ViewController'
在 Swift 中显示 UITextField 的底部边框不适用于约束。
UISearchbar 在 Swift 4 中使用 UItextfield
如何在 swift 中为一个文本字段禁用 DatePicker 交互(用于选择日期)“