lua正则表达式如何匹配中文
1 function CheckChinese(s) 2 local ret = {}; 3 local f = '[%z\1-\127\194-\244][\128-\191]*'; 4 local line, lastLine, isBreak = '', false, false; 5 for v in s:gfind(f) do 6 table.insert(ret, {c=v,isChinese=(#v~=1)}); 7 end 8 return ret; 9 end 10 for k, v in ipairs(CheckChinese('a中文b+')) do 11 print(k,v.c,#v.c,v.isChinese); 12 end 13 ------------------- 14 1 a 1 false 15 2 中 3 true 16 3 文 3 true 17 4 b 1 false 18 5 + 1 false
贴一段匹配中英文混合输入的代码
1 function dlg:onBtnOKClick() 2 local input = self:getInputNewContent() 3 if input == "" then 4 flytip("输入不能为空") 5 return 6 end 7 if self.pattern then 8 if self.isContainChinese then 9 local charCount = 0 10 for i, v in ipairs(self:CheckChinese(input)) do 11 if v.isChinese then 12 charCount = charCount + 2 13 else 14 charCount = charCount + 1 15 if string.find(v.c, self.pattern) == nil then 16 flytip("抱歉,您输入的内容含有非法字符或屏蔽词,请重新输入。") 17 return 18 end 19 end 20 end 21 if self.characterLimit then 22 if charCount > self.characterLimit then 23 flytip("抱歉,您输入的字符长度有误,请重新输入。") 24 return 25 end 26 end 27 else 28 if string.find(input, self.pattern) == nil then 29 flytip("抱歉,您输入的内容含有非法字符或屏蔽词,请重新输入。") 30 return 31 end 32 end 33 end 34 35 self:Hide() 36 if self._onOK then 37 self._onOK() 38 end 39 end