前段时间做一个需求,判断用户输入的内容是否是电话号码,只匹配国内的,由于代码是使用的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次或者多次 懒惰匹配 |