* 通用过滤函数,参数str为需要处理的字符串,ref为参照规则
*/
function filter(str,ref){
for(var i=0i<ref.lengthi++){
str=str.replace(new RegExp(ref[i][0],"gi"),ref[i][1])
}
return str
}
/*使用方法*/
var temp="dadfa DALeweceqrcqfgdgdagaf"
temp=filter(temp,[["dalai","da。lai"],["falun","fa。lun"],["xxx","yyy"]])
/*使用示例,将下面代码保存为网页*/
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
function $(id){return document.getElementById(id)}
/*
* 通用过滤函数,参数str为需要处理的字符串,ref为参照规则
*/
function filter(str,ref){
for(var i=0i<ref.lengthi++){
str=str.replace(new RegExp(ref[i][0],"gi"),ref[i][1])
}
return str
}
function html_f(){
var ref = new Array()
ref.push(["html","HTML文档"])
ref.push(["head","头部"])
ref.push(["meta","媒体"])
ref.push(["title","标题"])
ref.push(["link","链接"])
ref.push(["script","脚本"])
ref.push(["body","身体"])
$("output").innerText=filter($("input").innerText,ref)
}
</script>
</head>
<body>
<textarea id="input" style="width:400pxheight:500px"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312" />
<title>javascript过滤关键词不区分大小写字母的问题_百度知道 </title>
<link rel="alternate" type="application/rss+xml" title="“javascript过滤关键词不区分大小写字母的问题”的最新回答(RSS 2.0)" href="http://zhidao.baidu.com/q?ct=20&qid=144059871&pn=65535&rn=25&tn=rssqb">
<link href="/ikqb.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="/userlogin.js?213"></script>
</head>
<body></textarea>
<input type="button" value="过滤" onclick="html_f()"/>
<textarea id="output" style="width:400pxheight:500px"></textarea>
<br/>
</body>
</html>
1、jQuery使用正则匹配替换特殊字符
function RegeMatch(){var pattern = new RegExp("[~'!@#$%^&*()-+_=:]")
if($("#name").val() != "" && $("#name").val() != null){
if(pattern.test($("#name").val())){
alert("非法字符!")
$("#name").attr("value","")
$("#name").focus()
return false
}
}
}
2、jQuery限制输入ASCII值
//数字0-9的ascii为48-57//大写A-Z的ascii为65-90
//小写a-z的ascii为97-122
// ----------------------------------------------------------------------
// <summary>
// 限制只能输入数字和字母
// </summary>
// ----------------------------------------------------------------------
$.fn.onlyNumAlpha = function () {
$(this).keypress(function (event) {
var eventObj = event || e
var keyCode = eventObj.keyCode || eventObj.which
if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122))
return true
else
return false
}).focus(function () {
this.style.imeMode = 'disabled'
}).bind("paste", function () {
var clipboard = window.clipboardData.getData("Text")
if (/^(\d|[a-zA-Z])+$/.test(clipboard))
return true
else
return false
})
}
//-----调用方法$("#文本框id").onlyNumAlpha()
3、js正则匹配过滤
function stripscript(s){
var pattern = new RegExp("[`~!@#$^&*()=|{}':',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]")
var rs = ""
for (var i = 0 i < s.length i++) {
rs = rs+s.substr(i, 1).replace(pattern, '')
}
return rs
}
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。
| 参数 | 描述 |
| function(currentValue, index,arr) | 必须。函数,数组中的每个元素都会执行这个函数
函数参数:
| 参数 | 描述 |
| currentValue | 必须。当前元素的值 |
| index | 可选。当期元素的索引值 |
| arr | 可选。当期元素属于的数组对象 |
|
| thisValue | 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
如果省略了 thisValue ,"this" 的值为 "undefined" |
首先回顾一下filter的作用:过滤数组中符合条件的元素
另外也可以用来过滤对象数组中符合条件的对象,eg:
|
目前比较常用的方法是使用ES6的set完成,eg:
结合map使用可以先过滤出符合条件的对象然后去除某些不需要的字段,比如:
简单讲filter就是一个数组过滤器,参数接收一个函数,数组的每一项经过函数过滤,返回一个符合过滤条件的新数组
函数接收三个参数: