Попытка использовать Regex соответствует номеру телефона iOS с помощью ярлыков iOS
Я создаю ярлык iOS, который начинается с проверки того, хранится ли в буфере обмена скопированный номер телефона.
Пока что мое регулярное выражение следующее:
^[\d\()-‑+ ]+$
Хотя при наборе обычного телефонного номера с клавиатуры телефона, например,
+972 12-345-6789
, он отлично работает; похоже при копировании прямо из дефолтного
Phone
приложение, оно не находит совпадения.
Я должен упомянуть, что после некоторого копания кажется, что номер телефона, скопированный из приложения Phone, связан с некоторыми дополнительными специальными символами, используемыми для
Left-To-Right Embedding
и тому подобное. Использование декодера Unicode дало мне следующую строку:
‪+972 12‑345‑6789‬
Я даже не уверен, является ли это причиной, но, возможно, это как-то связано с этим. Если да - могу ли я как-нибудь использовать
iOS Shortcuts
декодировать текст буфера обмена в формат Unicode и удалить лишние символы? А если между ними нет связи, в чем еще может быть проблема?
3 ответа
Вы можете добавить в шаблон поддержку всех этих символов:
^[\d()+\p{Zs}\p{Pd}\p{Cf}]+$`
Примечание:
-
\p{Zs}
соответствует всем пробелам без табуляции и разрывов строк (добавить\t
в скобки, если вам нужно поддерживать TAB) -
\p{Pd}
будет соответствовать любым тире -
\p{Cf}
совпадает с двунаправленными метками и другими символами формата управления.
Альтернативное решение
В Shortcuts есть встроенная команда для извлечения телефонных номеров. Просто используйте команду «Получить номера телефонов от _______» в ярлыке. Он распознает все форматы телефонных номеров.