1. 首页
  2. web前端

JS filter():检测特殊字符

在接收表单数据时,经常需要检测特殊字符,过滤敏感词汇。本例为 String 扩展一个原型方法 filter(),用来检测字符串中是否包含指定的特殊字符。

定义 filte() 的参数为任意长度和个数的特殊字符列表,检测的返回结果为布尔值。如果检测到任意指定的特殊字符,则返回 true,否则返回 false。

  //检测特殊字符,蚕食为特殊字符列表,返回true表示存在,否则不存在  String.prototype.filter = function () {      if (arguments.length < 1) throw new Error("缺少参数");  //如果没有参数,则抛出异常      var a = [], _this = this;  //定义空数组,把字符串存储在内部变量中      for (var i = 0; i <arguments.length; i ++) {  //遍历参数,把参数列表转换为数组          a.push(arguments[i]);   //把每个参数值推入数组      }      var i = -1;  //初始化临时变量为-1      a.forEach(function(key) {  //迭代数组,检测字符串中是否包含特殊字符          if (i != -1) return true;  //如果临时变量不等于-1,提前返回true          i = _this.indexOf(key);  //检索到字符串下标位置      });      if(i == -1) {  //如果i等于-1,返回false,说明没有检测到特殊字符          return false;      } else {  //如果i不等于-1,返回true,说明检测到特殊字符          return true;      }  }

下面应用 String 类型的扩展方法 check() 来检测字符串中是否包含特殊字符尖角号,以判断字符串中是否存在 HTML 标签。

  var s = '<script language="javascript" type="text/javascript">';  //定义字符串直接量  var b = s.filter("<",">");  //调用String扩展方法,检测字符串  console.log(b);  //返回true,说明存在 "<"或">" ,即存在标签

由于 Array 的原型方法 forEach() 能够多层迭代数组,,所以可以以数组的形式传递参数。

  var s = '<script language="javascript" type="text/javascript">';  var a = ["<", ">", ""","'","/",";","|"];  var b = s.check(a);  console.log(b);

把特殊字符存储在数组中,这样更方便管理和引用。

原文始发于:JS filter():检测特殊字符

主题测试文章,只做测试使用。发布者:程序员,转转请注明出处:http://www.cxybcw.com/2081.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code