js正则表达式验证文本框输入SQL条件是否合理

本文介绍了一种使用正则表达式提高WEB项目中数字条件SQL查询效率的方法。通过前端验证用户的输入格式,如“>50”,简化了后台处理流程,并避免了非数字输入引发的问题。文中提供了正则表达式的具体实现及示例代码。
在开发WEB项目时,页面上有一些查询条件输入框,后台一般采取拼凑SQL的方式来处理。例如在.NET中类似代码:
StringBuilder sb = new StringBuilder();
sb.Append(
"SELECT * FROM A WHERE 1=1");
// 此处没有对特殊字符进行处理,只是为了演示
if (txtName.Text != string.Empty) sb.Append(" AND name LIKE '%"+txtName.Text+"%'");
......

字符串模糊查找可以这样做,但是如果是数字比较,则还需要在页面中加入下拉框,下拉框中有“大于”,“等于”,“小于”等等关系,然后旁边是一个文本框,供用户输入值,这种方式既不友好,也有问题。如果在文本框中输入非数字,后台还需要try..catch处理。其实这些都完全可以放在前台来完成,后台也无需再对文本框输入的是否是数字而操心了。

正则表达式真是个好冬冬,无需太多代码,就把问题搞定。我想要用户在输入数字的查询表达式时像这样,例如我要查找年龄大于50岁的,那么我直接在文本框中输入“>50”即可。又直观,又方便。

/^ *(>|<|<>|>=|<=|=) */d+ *$/  这个表达式是针对输入整数的;

/^ *(>|<|<>|>=|<=|=) */d+(/./d+)? *$/  这个表达式是针对输入包含小数的;

在上面的正则表达式中考虑了用户会输入一些多余的空格字符的情况。当然,如果对于输入某一个范围之内的表达式就不管用了。毕竟我现在给出的表达式是只针对于拼凑SQL条件的。后台的代码就可以方便的处理了!

......
// 在前台处理时,当用户输入的表达式有误则清空输入框
if (txtCount.Text != string.Empty) sb.Append(" AND mycount "+txtCount.Text);
......
下面是测试的页面代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  
<script>
  
function validExpression(i)
  
{
      
var arrRegex = [/^ *(>|<|<>|>=|<=|=*d+ *$//^ *(>|<|<>|>=|<=|=*d+(.d+)? *$/];
      
if (!arrRegex[i].test(event.srcElement.value)) 
          document.getElementById(
'a').innerText = event.srcElement.name+'输入格式不对!';
      
else
          document.getElementById(
'a').innerText = "";
  }

  
</script>
</head>
<body>
年龄:
<input type="text" id="age" onblur="validExpression(0);" name="年龄"><br/>
价格:
<input type="text" id="price" onblur="validExpression(1);" name="价格"><br/>
<span style="color:red" id="a"></span>
</body>
</html>
最后,if u have a better idea than mine,please tell me.thanks:)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值