lua中的正则表达式

前言

前段时间做一个需求,判断用户输入的内容是否是电话号码,只匹配国内的,由于代码是使用的lua写的,所以就直接在前端的lua代码中,对用户的输入内容进行匹配。
在此使用了lua的正则匹配。

具体内容

判断是否是电话号码

^1[3-9]%d{9}$

在Lua中用于判断密码是否为顺子的正则表达式

"^1234567890$|^0987654321$|^2345678901$|^3210987654$|^4567890123$|^5432109876$|^6789012345$|^7654321098$|^8901234567$|^9876543210$"

此正则表达式只适用于包含10个数字字符的密码。如果需要匹配不同长度的密码,请相应地修改正则表达式。

要使用正则表达式判断字符串是否为数字顺子,可以使用以下正则表达式:

local str = "123456"
local pattern = "^1?2?3?4?5?6?7?8?9?$"
if str:match(pattern) then
  print("是数字顺子")
else
  print("不是数字顺子")
end

其中,^表示字符串的开始,$表示字符串的结尾,?表示前面的字符可以出现0次或1次。因此,该正则表达式匹配的是由0个或1个"1"、0个或1个"2"、0个或1个"3"、0个或1个"4"、0个或1个"5"、0个或1个"6"、0个或1个"7"、0个或1个"8"、0个或1个"9"组成的字符串,也就是数字顺子的所有可能性。如果字符串匹配该正则表达式,则说明它是数字顺子。

其他的正则匹配格式

–替换掉字符里的所有空格

--local text = string.gsub(textvalue, "%s+", "")

–替换掉英文标点符号

--local text = string.gsub(textvalue,"%p+","")

–自定义字符或标点 用’[]‘括起来,加上’%’ ,后面加上要剔除的字符 eg:剔除字符串中的a和b

--local text = string.gsub(textvalue, "[%a%b]", "")
local textvalue = "爱谁;'撒,打.!#$%^*电活"
local text = string.gsub(textvalue,"%p+","")
print(text)
print(string.gsub(textvalue,"%p+",""))

以下示例代码使用了Lua的字符串库函数:string.match()和string.find()。

local str = “Abc123def”

– 判断是否同时包含数字、大写字母和小写字母

if string.match(str, "%d") and string.match(str, "%u") and string.match(str, "%l") then
print("字符串同时包含数字、大写字母和小写字母")
else
print("字符串不同时包含数字、大写字母和小写字母")
end

– 判断是否同时包含数字、大写字母和小写字母

if string.find(str, "%d") and string.find(str, "%u") and string.find(str, "%l") then
print("字符串同时包含数字、大写字母和小写字母")
else
print("字符串不同时包含数字、大写字母和小写字母")
end

lua中支持的%转义字符

字符 含义
%a 字母a-z,A-Z
%b %bxy,以x和y进行成对匹配
%c 控制字符ASCII码 十进制转义表示为\0 - \31
%d 数字 0 - 9
%f %f[char-set],边界匹配,前一个不在范围内,后一个在范围内
%g 除了空格以外的可打印字符 十进制转义表示为\33 - \126
%l 小写字母 a - z
%u 大写字母 A - Z
%s 空格 十进制转义表示为\32
%p 标点符号,即!@#$%^&*()`~-_=+{}:"<>?[];',./
%w 字母数字 a - z, A - Z, 0 - 9
%x 十六进制符号 0 - 9, a - f, A - F
重复0次或者1次 贪婪匹配
重复0次或者多次 懒惰匹配

你可能感兴趣的:(lua,lua,正则表达式)