Ios Passport系列实时输入验证:NSPredicate与正则表达式问题
我刚刚发现带有所需字符数的正则表达式不起作用 我对Ios Passport系列实时输入验证:NSPredicate与正则表达式问题,ios,swift,regex,validation,Ios,Swift,Regex,Validation,我刚刚发现带有所需字符数的正则表达式不起作用 我对NSPredicate使用了标准方法,如下所示: let validatedString = NSPredicate(format:"SELF MATCHES %@", validationExpresion) return validatedString.evaluate(with: text) 其中,validationExpression是我的正则表达式,text只是一个字符串 我尝试了^[A-Z]+$,一切正常,但在
NSPredicate
使用了标准方法,如下所示:
let validatedString = NSPredicate(format:"SELF MATCHES %@", validationExpresion)
return validatedString.evaluate(with: text)
其中,validationExpression
是我的正则表达式,text
只是一个字符串
我尝试了^[A-Z]+$
,一切正常,但在添加范围^[A-Z]{6}+$
后,它根本不起作用
同时,这两种表达方式都能很好地发挥作用。我错在哪里?要使用正则表达式实现实时输入验证,必须确保它能够匹配从第一个字符开始的所需格式字符串,并且每个后续字符都应该是可选的,但只有在前面的字符与模式匹配时,才允许使用每个后续字符 在这种情况下,您可以使用
^[A-Z](?:[A-Z][0-9]{0,6})?$
它将匹配字符串,如
A
AB
AB1
AB12
AB123
AB1234
AB12345
AB123456
请参阅和:
正则表达式详细信息
-字符串的开头(不需要使用^
,因为它需要完整的字符串匹配,但可以使用)匹配项
-大写ASCII字母[A-Z]
-可选的非捕获组匹配(?:[A-Z][0-9]{0,6})
-大写ASCII字母[A-Z]
-零到六位数[0-9]{0,6}
-字符串结尾(匹配的$
不需要)
{6}+
={6}
表示出现6次。您应该添加类似{0,6}的范围并删除+Man,非常感谢,它很有效!有{0,6}而没有“+”。但是我尝试验证passport系列,它是XX000000格式,并且^[A-Z]{0,2}?[0-9]{0,6}$regex首先允许数字,但是我只想要[A-Z]。我错在哪里?它用于实时输入验证吗?你需要^[A-Z](?:[A-Z][0-9]{0,6})$
然后。^[A-Z](?:[A-Z][0-9]{0,6})$非常好用!谢谢你,伙计!这是我见过的最好的解释!谢谢