Регулярное выражение в Swift для проверки имени держателя карты

Я ищу регулярное выражение для использования в Swift для проверки имени держателя карты для кредитной карты. Я ищу регулярное выражение, которое:

  • Имеет минимум 2 и максимум 26 символов
  • Принимать только дефисы (-) и апострофы ('), а не другие специальные символы.
  • Заглавные и строчные буквы и без цифр.
  • Не должно начинаться с пробела.

я использовал это

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

но он принимает только тире (-) без апострофа (')


person Somya    schedule 24.04.2018    source источник
comment
Настоятельно рекомендуем использовать regex101.com для проверки и уточнения вашего регулярного выражения. regex101.com   -  person Mike Taverne    schedule 24.04.2018


Ответы (2)


попробуйте с этим регулярным выражением

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

глянь сюда

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

person matsib.dev    schedule 24.04.2018
comment
Это регулярное выражение не проверяет John Mc'Kenzie. Он также не принимает пробелы между именем и фамилией. - person Somya; 24.04.2018
comment
* Я ищу регулярное выражение, которое - - Имеет минимум 2 и максимум 26 символов - Принимает только дефисы (-) и апострофы (') и никаких других специальных символов - Заглавные и строчные буквы и без цифр. - Не должно начинаться с пробела *››› вы не просили об этом... попробуйте сейчас - person matsib.dev; 24.04.2018
comment
Имя держателя карты может также содержать точки (.), например Джон Ф. Кеннеди или миссис Робинсон. - person heximal; 12.12.2018
comment
OP явно запрашивает это Has minimum 2 and maximum 26 characters - Accept dashes (-) and apostrophes (') only and no other special character; поэтому она/он не хочет, чтобы точки были действительным символом; но, конечно, вы можете добавить и точки. - person matsib.dev; 12.12.2018

Судя по вашему описанию, это то, что вы ищете:

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

Демо

Несколько замечаний:

  • возможно, вы не хотите разрешать все возможные пробельные символы [\r\n\t\f\v ], а только пробелы.
  • вам нужно настроить допустимую длину второй строки, если вы добавляете 1-ю группу, которая не включает пробел и тире (поскольку эта группа вносит дополнительный символ).
  • с \p{L} вы разрешаете любое письмо с любого языка (что хорошо); в противном случае используйте [a-zA-z], если просто хотите разрешить обычный (ASCII) алфавит.

PS: Не забудьте правильно экранировать шаблон: "^[\\p{L}'][\\p{L}' -]{1,25}$"

person wp78de    schedule 25.04.2018