将line uri转换为UK友好格式

时间:2015-05-06 09:00:10

标签: regex powershell

我从Microsoft下载了一个脚本,它允许我们取一个字符串并将其转换为友好格式,以显示在用户配置文件中。

原始字符串为tel:+441234123456;ext=3456

我需要做的是将其转换为英国友好格式,以便转换后的字符串为01234 123456

我认为我需要采取的步骤是:

  • 删除tel:+44并替换为0.
  • 在前4位后添加一个空格。
  • 使用最后6位数完成变量。
  • 删除;ext=3456

有一个类似的过程,但对于美国建议,不幸的是,不知道正则表达式,这略微超过我的头!

$tel = $LineURI -replace 'tel:(\+1)([2-9]\d{2})([2-9]\d{2})(\d{4});ext=\d{4}','$1 ($2) $3-$4;'

2 个答案:

答案 0 :(得分:2)

这是一种使用多个-replace的方式。以某些性能为代价来简化操作:

$tel = $LineURI-replace 'tel:\+\d\d','0' -replace ';.+' -replace '(^.{5})','$1 '

答案 1 :(得分:1)

单个正则表达式就足够了:

PS C:\> 'tel:+441234123456;ext=3456' -replace '^tel:\+\d{2}(\d{4})(\d+);.*$', '0$1 $2'
01234 123456

正则表达式细分:

  • ^tel:\+\d{2}匹配文字tel:+,后跟字符串开头的两位数字(^)。
  • (\d{4})匹配四个后续数字。括号将匹配分组,以便在替换中将其引用为$1
  • (\d+)匹配上述后续数字的最长序列,但至少有一位数。这也按括号分组,以便在替换中引用它$2
  • ;.*$匹配以分号开头的字符串的剩余部分。