6

我正在尝试在 Lua 中实现一个模式但没有成功

我需要的模式就像正则表达式:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}

这是为了验证guid

我无法找到在 Lua 中找到实现正则表达式的正确方法,也无法在文档中找到。

请帮助我为 guid 实施上述正则表达式。

4

1 回答 1

12

你可以使用这个:

local pattern = "%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x"
local guid = "3F2504E0-4F89-41D3-9A0C-0305E82C3301"
print(guid:match(pattern))

注意:

  1. {8}Lua 模式不支持修饰符。
  2. -需要用%-.
  3. 字符类%x等价于[0-9a-fA-F].

使用@hjpotter92 提供的辅助表构建模式的清晰方法:

local x = "%x"
local t = { x:rep(8), x:rep(4), x:rep(4), x:rep(4), x:rep(12) }
local pattern = table.concat(t, '%-')
于 2014-04-11T13:45:28.877 回答