js 正则过滤特殊字符?

//验证特殊字符functionillegalChar(str){varpattern=/[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im;if(p... //验证特殊字符
function illegalChar(str)
{
var pattern=/[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im;
if(pattern.test(str)){
return false;
}
return true;
}
上面这段函数是判断str是不是特殊字符的,如果我想动态传入一个参数字符,如果这个参数字符包含在特殊字符里面,就放行。谢谢!
没有人知道吗?比如说我传入一个参数字符@! 这这两字符时应该从特殊字符列表去掉,应该放行。如果没有传参,默认就是var pattern=/[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im;都是特殊字符列表。
展开
 我来答
淡淡的雷人生活
2019-03-11 · TA获得超过2399个赞
知道小有建树答主
回答量:440
采纳率:87%
帮助的人:72.6万
展开全部

您好

js检查是否含有非法字符,js 正则过滤特殊字符

//正则
function trimTxt(txt){
 return txt.replace(/(^\s*)|(\s*$)/g, "");
}
 
/**
 * 检查是否含有非法字符
 * @param temp_str
 * @returns {Boolean}
 */
function is_forbid(temp_str){
    temp_str=trimTxt(temp_str);
temp_str = temp_str.replace('*',"@");
temp_str = temp_str.replace('--',"@");
temp_str = temp_str.replace('/',"@");
temp_str = temp_str.replace('+',"@");
temp_str = temp_str.replace('\'',"@");
temp_str = temp_str.replace('\\',"@");
temp_str = temp_str.replace('$',"@");
temp_str = temp_str.replace('^',"@");
temp_str = temp_str.replace('.',"@");
temp_str = temp_str.replace(';',"@");
temp_str = temp_str.replace('<',"@");
temp_str = temp_str.replace('>',"@");
temp_str = temp_str.replace('"',"@");
temp_str = temp_str.replace('=',"@");
temp_str = temp_str.replace('{',"@");
temp_str = temp_str.replace('}',"@");
var forbid_str=new String('@,%,~,&');
var forbid_array=new Array();
forbid_array=forbid_str.split(',');
for(i=0;i<forbid_array.length;i++){
if(temp_str.search(new RegExp(forbid_array[i])) != -1)
return false;
}
return true;
}

--------------------- 

作者:dongsir 董先生 

来源:董先生的博客 

原文链接:js检查是否含有非法字符

版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。转载时请标注:http://dongsir.cn/p/195

MAILLIBIN
2015-02-10
知道答主
回答量:20
采纳率:0%
帮助的人:2万
展开全部
string1="这是。一,个,包$!含#特殊、字符的字^&/*符串可以\使用正$则表达式[]去除其{中的特}殊字|符"

结果: "这是。一,个,包$!含#特殊、字符的字^&/*符串可以使用正$则表达式[]去除其{中的特}殊字|符"

string1.replace(/\^|\.|\*|\?|\!|\/|\\|\$|\#|\&|\||,|\[|\]|\{|\}|\(|\)|\-|\+|\=/g," ");

结果: "这是。一,个,包 含 特殊、字符的字 符串可以使用正 则表达式 去除其 中的特 殊字 符"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乌微月2S
推荐于2017-09-19 · TA获得超过5037个赞
知道大有可为答主
回答量:5361
采纳率:42%
帮助的人:2885万
展开全部
就是正则写的有问题啊。
function illegalChar(str)
{
var pattern=/[`~!@#\$%\^\&\*\(\)_\+<>\?:"\{\},\.\\\/;'\[\]]/im;
if(pattern.test(str)){
return false;
}
return true;
}
alert(illegalChar("123?"));

应该就这样啊
追问
正则是没有问题的,patter包含的是特殊字符,我的意思是想这样传参illegalChar('@!')  那@!就从特殊字符列表去除掉,可以放行。如果不传参,默认就是用特殊字符列表。其实就是一个字符串替换,pattern.replace(你的参数,‘’);但是这样不行,js报错,不知道为什么?
追答
你不行的话举个例子吧,我先按我理解的来啊。

function illegalChar(str){
var strPattern="`~!@#\$%\^\&\*\(\)_\+\?:\"\{\},\.\\\/;'\[\]";
for(var i=0;i

你先看看,基本是这个思路。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lmh2072005
2012-12-10 · TA获得超过194个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:90.2万
展开全部
给你 个参考 :(其中param参数为你要过滤的字符)
function illegalChar(str,param)
{
var reg = "[`~!@#\$%\^&\*\(\)_\+<>\?:\"{},\.\/;'\[\\]]";
if(param){
reg = reg.replace(param,'');
}
var pattern=new RegExp(reg,'im');
if(pattern.test(str)){
return false;
}
return true;
}
更多追问追答
追问
不行啊,reg = reg.replace(param,'');这个根本就没剔除过滤的字符,还是原来的字符?太奇怪了。
追答
这个:
function illegalChar(str,param)
{
var reg = "[`~!@#\$%\^&\*\(\)_\+\?:\"{},\.\/;'\[\\]]";
if(param){
for(var i=0;i<param.length;i++){
reg = reg.replace(param[i],'');
}
}
var pattern=new RegExp(reg,'im');
if(pattern.test(str)){
return false;
}
return true;
}

测试:

illegalChar('@','@!');
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式