zoukankan      html  css  js  c++  java
  • lua正则表达式如何匹配中文

     1 function CheckChinese(s) 
     2     local ret = {};
     3     local f = '[%z1-127194-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 23    true
    16 33    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
  • 相关阅读:
    Java设计模式-装饰器模式
    【c++内存分布系列】单独一个类
    【转】LCS
    快速排序
    冒泡排序
    选择排序
    多线程读取全局变量
    【转】一致性hash算法(consistent hashing)
    【转】五笔的字典序编码与解码
    给定一个函数rand()能产生0到n-1之间的等概率随机数,问如何产生0到m-1之间等概率的随机数?
  • 原文地址:https://www.cnblogs.com/AaronBlogs/p/7428876.html
Copyright © 2011-2022 走看看