3

我有一个 Cisco ASA 8.4 VPN 集中器。我正在尝试使用 Lua 从传入的证书字符串中提取数字,并在带有 AD 的 LDAP 查找中使用它们以进行授权。我发现了一个有效的字符串......有时。

该字符串采用以下格式:

LAST_NAME.FIRST_NAME.MIDDLE_NAME.1234567890

我的 LDAP 只想查看数字和@域名。我目前的脚本是:return string.gsub(cert.subject.cn, "^(%w+)%.(%w+)%.(%w+)%.(%w+)$", "%4@domain")

这个脚本在大多数情况下都能正常工作(80-90% 的时间)。当它不起作用时,人们没有中间名,4 个名字而不是 3 个,等等。

我的问题是如何让它只输出 10 位数字,而不管它之前是什么。返回 string.match 似乎太容易了,但到目前为止我无法让它工作。有任何想法吗?

4

1 回答 1

4

您可以使用模式.*(%d%d%d%d%d%d%d%d%d%d)$

local str = 'LAST_NAME.FIRST_NAME.MIDDLE_NAME.1234567890'
print(str:match('.*(' .. ('%d'):rep(10) .. ')$'))

或者.*(%d+)$如果位数始终为 10。

如果 10 位数字始终是最后 10 个字符,则此方法有效:

print(str:sub(-10, -1))
于 2015-02-19T15:08:00.777 回答