尝试使用正则表达式匹配 iOS phone 数字使用 iOS 快捷方式

Trying to use Regex match an iOS phone number using iOS Shortcuts

我正在创建一个 iOS 快捷方式,它首先检查剪贴板当前是否包含复制的 phone 号码。

到目前为止,我的正则表达式如下:

^[\d\()-‑+  ]+$

虽然在使用 phone 键盘输入常规 phone 数字时,例如 +972 12-345-6789,它工作得很好;似乎直接从默认 Phone 应用程序复制时,找不到匹配项。

我应该提一下,经过一段时间的挖掘,从 Phone 应用程序复制的 phone 号码似乎与一些额外的特殊关联用于 Left-To-Right Embedding 等的字符。使用 Unicode 解码器得到以下字符串:

‪+972 12‑345‑6789‬

我什至不确定这是否是原因,但它可能与它有某种联系。如果是这样 - 有什么方法可以使用 iOS Shortcuts 将剪贴板文本解码为 Unicode 格式并删除那些额外的字符?如果两者之间没有联系,还有什么问题?

您可以将对所有这些字符的支持添加到模式中:

^[\d()+\p{Zs}\p{Pd}\p{Cf}]+$`

注:

  • \p{Zs} 匹配所有没有制表符和换行符的空格(如果需要支持 TAB,请在括号中添加 \t
  • \p{Pd} 将匹配任何破折号
  • \p{Cf} 匹配双向标记和更多其他控制格式字符。

备选方案

可以将复制的剪贴板文本粘贴到 Text 操作中,该操作会删除任何其他格式。