Lua学习简单正则匹配笔记

--  .        任意字符
-- %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次这种匹配方法, 所以只能使用原始方法. 如果大家有好的方法, 可以评论告诉我.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值