Lua里有没有逻辑运算 中的并和或的运算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lua里有没有逻辑运算 中的并和或的运算相关的知识,希望对你有一定的参考价值。

如题。小弟刚学Lua ,请各位大虾帮忙。

参考技术A   
  Lua有逻辑运算,具体参考如下:
  比较运算符< > <= >= == ~=
  分别表示 小于,大于,不大于,不小于,相等,不相等。所有这些操作符总是返回true或false。
  对于Table,Function和Userdata类型的数据,只有 == 和 ~=可以用。相等表示两个变量引用的是同一个数据。比如:
  a=1,2
  b=a
  print(a==b, a~=b) -- true, false
  a=1,2
  b=1,2
  print(a==b, a~=b) -- false, true
  数值运算符
  和C语言一样,支持 +, -, *, /。但Lua还多了一个"^"。这表示指数乘方运算。比如2^3 结果为8, 2^4结果为16。
  连接两个字符串,可以用".."运处符。如:
  "This a " .. "string." -- 等于 "this a string"
  逻辑运算 (此处特别注意)
  and, or, not
  其中,and 和 or 与C语言区别特别大。
  在这里,请先记住,在Lua中,只有false和nil才计算为false,其它任何数据都计算为true,0也是true!
  and 和 or的运算结果不是true和false,而是和它的两个操作数相关。
  a and b:如果a为false,则返回a;否则返回b
  a or b:如果 a 为true,则返回a;否则返回b
  运算符优先级,从高到低顺序如下:

  ^
  not - (一元运算)
  * /
  + -
  ..(字符串连接)
  < > <= >= ~= ==
  and
  or
参考技术B Lua 中的逻辑操作符有 and, or, 以及 not。

10 or 20 --> 10
10 or error() --> 10
nil or "a" --> "a"
nil and 10 --> nil
false and error() --> false
false and nil --> false
false or nil --> nil
10 and 20 --> 20

input框限制只能输入正整数,逻辑与和或运算

有时需要限制文本框输入内容的类型,本节分享下正则表达式限制文本框只能输入数字、小数点、英文字母、汉字等代码。

例如,输入大于0的正整数

复制代码代码如下:

<input onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,‘‘)}else{this.value=this.value.replace(/\D/g,‘‘)}" onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,‘‘)}else{this.value=this.value.replace(/\D/g,‘‘)}">


1,文本框只能输入数字代码(小数点也不能输入)

复制代码代码如下:

<input onkeyup="this.value=this.value.replace(/\D/g,‘‘)" onafterpaste="this.value=this.value.replace(/\D/g,‘‘)">

 

2,只能输入数字,能输小数点.
 

 

复制代码代码如下:

<input onkeyup="if(isNaN(value))execCommand(‘undo‘)" onafterpaste="if(isNaN(value))execCommand(‘undo‘)">
<input name=txt1 onchange="if(/\D/.test(this.value)){alert(‘只能输入数字‘);this.value=‘‘;}">

 

3,数字和小数点方法二

复制代码代码如下:

<input type=text t_value="" o_value="" onkeypress="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" onkeyup="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" onblur="if(!this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?|\.\d*?)?$/))this.value=this.o_value;else{if(this.value.match(/^\.\d+$/))this.value=0+this.value;if(this.value.match(/^\.$/))this.value=0;this.o_value=this.value}">

 

封装成单独的函数:
 

 

复制代码代码如下:

function keyPress(ob) {
 if (!ob.value.match(/^[\+\-]?\d*?\.?\d*?$/)) ob.value = ob.t_value; else ob.t_value = ob.value; if (ob.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/)) ob.o_value = ob.value;
}
function keyUp(ob) {
 if (!ob.value.match(/^[\+\-]?\d*?\.?\d*?$/)) ob.value = ob.t_value; else ob.t_value = ob.value; if (ob.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/)) ob.o_value = ob.value;
        }
function onBlur(ob) {
if(!ob.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?|\.\d*?)?$/))ob.value=ob.o_value;else{if(ob.value.match(/^\.\d+$/))ob.value=0+ob.value;if(ob.value.match(/^\.$/))ob.value=0;ob.o_value=ob.value};
}

 

只需在调用,传入this对象即可!

4,只能输入字母和汉字

复制代码代码如下:

<input onkeyup="value=value.replace(/[\d]/g,‘‘) "onbeforepaste="clipboardData.setData(‘text‘,clipboardData.getData(‘text‘).replace(/[\d]/g,‘‘))" maxlength=10 name="Numbers">

 

5,只能输入英文字母和数字,不能输入中文

 

复制代码代码如下:

<input onkeyup="value=value.replace(/[^\w\.\/]/ig,‘‘)">

 

6,只能输入数字和英文

复制代码代码如下:

<input onKeyUp="value=value.replace(/[^\d|chun]/g,‘‘)">

 

7,小数点后只能有最多两位(数字,中文都可输入),不能输入字母和运算符号:

复制代码代码如下:

<input onKeyPress="if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 || /\.\d\d$/.test(value))event.returnValue=false">

 

8,小数点后只能有最多两位(数字,字母,中文都可输入),可以输入运算符号:

复制代码代码如下:

<input onkeyup="this.value=this.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,‘$1$2.$3‘)">

以上是关于Lua里有没有逻辑运算 中的并和或的运算的主要内容,如果未能解决你的问题,请参考以下文章

java中与和或的注意点

关于shell编程中逻辑运算异或的理解和实验

询问下lua中的连续逻辑运算是怎样判定的

input框限制只能输入正整数,逻辑与和或运算

input框限制只能输入正整数,逻辑与和或运算

lua中的逻辑运算符