错误域=NSCocoaErrorDomain 代码=2048 NSInvalidValue 与字符串正则表达式
Error Domain=NSCocoaErrorDomain Code=2048 NSInvalidValue with string regex
我有以下游乐场:
let regexStringElo = "^(?:506721|506728|506729|506730|506733|506745|506746|506747|506753|506775|506776|509067|509068|509069|509098|509100|509107|509109|650487|650496|650497|650499|650500|650501|650578|650586|650906|650907|650908|650909|650910|650911|650922|650938|650946|650948|651653|651657|651665|651676|651678|655001|655003|655015|650503|650504|650506|650510|650511|650513|650518|650519|650520|650521|650522|650523|650524|650582|650723|655013|655056|655057|506722|506724|506741|506742|509042|509045|509048|627780|650507|650508|650512|650920|650921|651658|651659|651677|655007|655008|504175|506718|506720|506725|506726|506727|506731|506732|506734|506735|506736|506739|506743|506774|506778|509000|509001|509003|509007|509020|509021|509022|509023|509035|509039|509040|509041|509051|509052|509053|509064|509065|509066|509073|509074|509077|509078|509079|509080|509091|509092|509093|509094|509104|509108|636368|650031|650033|650036|650037|650038|650039|650040|650041|650042|650043|650044|650045|650047|650407|650408|650485|650486|650488|650489|650490|650491|650492|650493|650494|650495|650502|650509|650514|650515|650525|650526|650527|650528|650529|650530|650577|650580|650583|650584|650585|650721|650722|650726|650727|650901|650902|650903|650904|650905|650912|650913|650914|650915|650916|650917|650918|650919|650928|650939|650947|650954|650955|650971|651652|651654|651655|651656|651660|651661|651663|651664|651675|655000|655002|655004|655006|655009|655010|655014|655051|650724|655052|650587|650725|650409|650588|650589|509070|509071|650406|506750|650439|650516|650517|651662|655012|506707|506708|506715|506719|509054|509055|509056|509057|509058|509059|509060|509061|509062|509063|509084|509106|650498|650579|655005)\d{,10}$"
func matchCardWithRegex(number:String,regex:String) -> Bool{
let rx = try! NSRegularExpression(pattern: regex)
let range = NSRange(location: 0, length: number.utf16.count)
return rx.firstMatch(in: number, options: [], range: range) != nil
}
matchCardWithRegex(number: "6362970000457013", regex: regexStringElo)
但是我收到带有字符串正则表达式的错误 NSInvalidValue。怎么了?
这是 {,10}
中的逗号 - 不是有效的运算符:https://developer.apple.com/documentation/foundation/nsregularexpression
如果您去掉逗号或将逗号移到 10 之后,它将 运行(尽管 return 都没有匹配项)
我有以下游乐场:
let regexStringElo = "^(?:506721|506728|506729|506730|506733|506745|506746|506747|506753|506775|506776|509067|509068|509069|509098|509100|509107|509109|650487|650496|650497|650499|650500|650501|650578|650586|650906|650907|650908|650909|650910|650911|650922|650938|650946|650948|651653|651657|651665|651676|651678|655001|655003|655015|650503|650504|650506|650510|650511|650513|650518|650519|650520|650521|650522|650523|650524|650582|650723|655013|655056|655057|506722|506724|506741|506742|509042|509045|509048|627780|650507|650508|650512|650920|650921|651658|651659|651677|655007|655008|504175|506718|506720|506725|506726|506727|506731|506732|506734|506735|506736|506739|506743|506774|506778|509000|509001|509003|509007|509020|509021|509022|509023|509035|509039|509040|509041|509051|509052|509053|509064|509065|509066|509073|509074|509077|509078|509079|509080|509091|509092|509093|509094|509104|509108|636368|650031|650033|650036|650037|650038|650039|650040|650041|650042|650043|650044|650045|650047|650407|650408|650485|650486|650488|650489|650490|650491|650492|650493|650494|650495|650502|650509|650514|650515|650525|650526|650527|650528|650529|650530|650577|650580|650583|650584|650585|650721|650722|650726|650727|650901|650902|650903|650904|650905|650912|650913|650914|650915|650916|650917|650918|650919|650928|650939|650947|650954|650955|650971|651652|651654|651655|651656|651660|651661|651663|651664|651675|655000|655002|655004|655006|655009|655010|655014|655051|650724|655052|650587|650725|650409|650588|650589|509070|509071|650406|506750|650439|650516|650517|651662|655012|506707|506708|506715|506719|509054|509055|509056|509057|509058|509059|509060|509061|509062|509063|509084|509106|650498|650579|655005)\d{,10}$"
func matchCardWithRegex(number:String,regex:String) -> Bool{
let rx = try! NSRegularExpression(pattern: regex)
let range = NSRange(location: 0, length: number.utf16.count)
return rx.firstMatch(in: number, options: [], range: range) != nil
}
matchCardWithRegex(number: "6362970000457013", regex: regexStringElo)
但是我收到带有字符串正则表达式的错误 NSInvalidValue。怎么了?
这是 {,10}
中的逗号 - 不是有效的运算符:https://developer.apple.com/documentation/foundation/nsregularexpression
如果您去掉逗号或将逗号移到 10 之后,它将 运行(尽管 return 都没有匹配项)