【问题标题】:Regular expression in Swift to validate Cardholder nameSwift 中用于验证持卡人姓名的正则表达式
【发布时间】:2018-04-24 01:23:30
【问题描述】:

我正在寻找在 Swift 中使用的正则表达式来验证信用卡的持卡人姓名。我正在寻找一个正则表达式:

  • 最少 2 个字符,最多 26 个字符
  • 只接受破折号 (-) 和撇号 ('),不接受其他特殊字符
  • 大写和小写字母,没有数字。
  • 不应以空格开头。

我在用这个

"^[^-\\s][\\p{L}\\-'\\s]{2,26}$"

但它只接受破折号 (-) 不接受撇号 (')

【问题讨论】:

  • 强烈建议使用 regex101.com 来测试和优化您的正则表达式。 regex101.com

标签: swift regex nsregularexpression


【解决方案1】:

试试这个正则表达式

(?<! )[-a-zA-Z' ]{2,26}

看这里

https://regex101.com/r/0UVvR1/1

【讨论】:

  • 此正则表达式未验证 John Mc'Kenzie。名字和姓氏之间也没有空格。
  • *我正在寻找一个正则表达式 - - 最少 2 个和最多 26 个字符 - 只接受破折号 (-) 和撇号 ('),没有其他特殊字符 - 大写字母和小写字母,没有数字. - 不应该以空格开头*>>> 你没有要求...立即尝试
  • 持卡人姓名也可能包含点 (.),例如 John F. Kennedy 或 Mrs. Robinson
  • OP 明确要求这个Has minimum 2 and maximum 26 characters - Accept dashes (-) and apostrophes (') only and no other special character;所以,她/他不希望点成为有效的字符;但是,当然,您也可以添加点。
【解决方案2】:

根据您的描述猜测,这就是您要查找的内容:

^[\p{L}'-][\p{L}' -]{1,25}$

Demo

几点说明:

  • 您可能不想允许所有可能的空白字符[\r\n\t\f\v ],而只允许空格。
  • 如果添加不包含空格和破折号的第一组,则必须调整第二个字符串的允许长度(因为该组贡献了一个额外的字符)。
  • \p{L} 允许任何语言的任何类型的字母(这很好);否则使用 [a-zA-z] 如果只想允许常规 (ASCII) 字母表。

PS:不要忘记正确转义模式:"^[\\p{L}'][\\p{L}' -]{1,25}$"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多