尝试使用正则表达式匹配 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
操作中,该操作会删除任何其他格式。
我正在创建一个 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
操作中,该操作会删除任何其他格式。