-- . 任意字符
-- %a 字母
-- %c 控制字符
-- %d 数字
-- %l 小写字母
-- %p 标点字符
-- %s 空白符
-- %u 大写字母
-- %w 字母和数字
-- %x 十六进制数字
-- %z 代表0的字符
-- 上面字符类的大写形式表示小写所代表的集合的补集。例如, '%A'非字母的字符:
function isNonemptyString()
print("-------------空字符串匹配-------------")
local target = "ddsfakg;ak;kwsepods;fksdlkfa;gjklajglajdlsfjwoeigl"
local pattern = ".+"
local startPos
startPos,_ = string.find(target, pattern)
if startPos ~= nil then
print("target string is not nil")
else
print("target string is nil")
end
end
function isFloatValue( ... )
--匹配保留小数点后两位的浮点数
print("-------------精确到小数点后两位的浮点数匹配-------------")
local target = {456, 125.32, 125.00, 12.564, 10.2}
local pattern = "%d+%.[%d][%d]"
local startPos
for k,v in pairs(target) do
startPos,_ = string.find(v, pattern)
if startPos ~= nil then
print(v .. " is %0.2f float value")
else
print(v .. " is not %0.2f float value")
end
end
end
function isEmailString()
-- 匹配email地址
print("-------------email地址匹配-------------")
local target = {
"ddd@ddlsfa.com.cn",
"dd.ddd@ddlsfa.com",
"dd!!@ma.com",
"kou1325@126.com",
"eric_1992@outlook.com",
"eeeg.1325@qq.com",
"ddd_1325@ddd.com.uk"
}
local pattern = "[%d%a]+([%.%_]*[%d%a]+)@[%d%a]+%.%a+"
local startPos
for k,v in pairs(target) do
startPos,_ = string.find(v, pattern)
if startPos ~= nil then
print(v .. " is valid email address")
else
print(v .. " is invalid email address")
end
end
end
function isPhoneNumber()
print("-------------手机号匹配-------------")
local target = {
"123",
"18634252643",
"sfds",
"12345667894",
}
local startPos
local pattern = "1[3578][%d][%d][%d][%d][%d][%d][%d][%d][%d]"
for k,v in pairs(target) do
startPos, _ = string.find(v, pattern)
if startPos ~= nil then
print(v .. " is phone number")
else
print(v .. " is not phone number")
end
end
end
isNonemptyString(target)
isFloatValue()
isEmailString()
isPhoneNumber()
目前lua好像本身不支持类似于其他语言的{n,m}重复匹配最少n次最多m次这种匹配方法, 所以只能使用原始方法. 如果大家有好的方法, 可以评论告诉我.