87,903
社区成员
发帖
与我相关
我的任务
分享
function noIllegleCharacter(s){
var pattern = /[\b(script|document|eval|CR|LF|)\b]/;
var rs = "";
for (var i = 0; i < s.length; i++){
rs = rs + s.substr(i, 1).replace(pattern, '');
}
alert("过滤后的字符为"+rs);
if(!(rs===s)){
alert("您输入的条件中包含非法字符,请修改!");
return false;
}else{
return true;
}
}
var s = "abs";
if(!noIllegleCharacter(s)){
alert("输入确实有问题");
}else{
alert("输入没问题");
}
function noIllegleCharacter(s){
var pattern = /\b(script|document|eval|CR|LF|)\b/ig;
var rs = s.replace(pattern, '');
alert("过滤后的字符为"+rs);
if(!(rs===s)){
alert("您输入的条件中包含非法字符,请修改!");
return false;
}else{
return true;
}
}
其实我的原问题是过滤这18个特殊字符:
[1] |
[2] &
[3] ;
[4] $
[5] %
[6] @
[7] '
[8] "
[9]
[10] ()
[11] +
[12] CR
[13] LF
[14] ,
[15] .
[16] script
[17] document
[18] eval
然后我写的正则表达式为:
[code=javascript]var pattern = /[|&;$%@\"\'\s()+,.\b(script|document|eval|CR|LF|)\b]/ig;
最后发现给的单词包含的字母也过滤掉了。
function noIllegleCharacter(s){
var pattern = /\b(script|document|eval|CR|LF)\b/ig;
var rs = s.replace(pattern, '');
alert("过滤后的字符为"+rs);
if(!(rs===s)){
alert("您输入的条件中包含非法字符,请修改!");
return false;
}else{
return true;
}
}
var s = "abs";
if(!noIllegleCharacter(s)){
alert("输入确实有问题");
}else{
alert("输入没问题");
}
var s = "abs eval;;";
if(!noIllegleCharacter(s)){
alert("输入确实有问题");
}else{
alert("输入没问题");
}
[/quote]
哥们你的测试的确可以,但还是有个问题
就是输入 var s = "abs eval;;";中间有个空格,但我把空格去掉后发现eval没有被过滤掉;
哥们,你是做前端的吗,方便加个qq聊吗?我的:479602279
function noIllegleCharacter(s){
var pattern = /\b(script|document|eval|CR|LF)\b/ig;
var rs = s.replace(pattern, '');
alert("过滤后的字符为"+rs);
if(!(rs===s)){
alert("您输入的条件中包含非法字符,请修改!");
return false;
}else{
return true;
}
}
var s = "abs";
if(!noIllegleCharacter(s)){
alert("输入确实有问题");
}else{
alert("输入没问题");
}
var s = "abs eval;;";
if(!noIllegleCharacter(s)){
alert("输入确实有问题");
}else{
alert("输入没问题");
}
function noIllegleCharacter(s){
var pattern = /\b(script|document|eval|CR|LF|)\b/ig;
var rs = s.replace(pattern, '');
alert("过滤后的字符为"+rs);
if(!(rs===s)){
alert("您输入的条件中包含非法字符,请修改!");
return false;
}else{
return true;
}
}