lua:模式匹配和提取电话号码

时间:2012-09-06 07:05:55

标签: lua lua-patterns

我无法在Lua中制作具有以下要求的函数:

  • 将字符串phone_number和2位country_code作为输入。
  • phone_number的格式为{1 || “”}} {country_code} {10或11位手机号码}

我需要输出10或11位手机号码。

示例I / O:

phone_number =“552234332344”,country_code =“55”=> “2234332344”

phone_number =“15522343323443”,country_code =“55”=> “22343323443”

谢谢!

2 个答案:

答案 0 :(得分:3)

试试"(1?)(%d%d)(%d+)"。将此与您的示例一起使用:

print(("15522343323443"):match("(1?)(%d%d)(%d+)"))
print(("5522343323443"):match("(1?)(%d%d)(%d+)"))

将打印:

1   55  22343323443
55  22343323443

如果您需要电话号码中的10位或11位数字,请指定%d 10次,然后添加%d?%d是一个匹配任何数字的字符类,问号修饰符匹配前一个字符或字符类0或1次。

答案 1 :(得分:-1)

试试这个

^[0-9]{1,3}\s\|{2}\s[0-9]{10,11}$

这个表达式适用于{i} {{}}这样的模式,就像你猜的那样。

已编辑:我想这可行

  • 使用1 || 9945397865 =>获取字符串长度输出: 12
  • 使用string.len('552234332344') =>匹配字符串输出: 552234332344如果匹配
  • 使用string.match ('552234332344', ^%d) =>获取国家/地区代码输出: 55
  • 取电话号码使用string.sub ('552234332344', 1, 2) => 输出: 2234332344