Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript表单清理_Javascript_Html_Sanitization - Fatal编程技术网

Javascript表单清理

Javascript表单清理,javascript,html,sanitization,Javascript,Html,Sanitization,我想验证和清理一个输入,例如来自GET表单请求的“搜索”,但我缺少一些关于Javascript模式匹配的信息 这是我目前正在使用的功能: 函数jsValidationAndSanitization(){ /** 验证和清理来自HTML表单的每个输入。 @返回布尔值 **/ var submittedInput=document.forms[“form”][“search_input”].value; 如果(submittedInput==“”){ 警报(“错误:空输入”); 返回false;

我想验证和清理一个输入,例如来自GET表单请求的“搜索”,但我缺少一些关于Javascript模式匹配的信息

这是我目前正在使用的功能:

函数jsValidationAndSanitization(){
/**
验证和清理来自HTML表单的每个输入。
@返回布尔值
**/
var submittedInput=document.forms[“form”][“search_input”].value;
如果(submittedInput==“”){
警报(“错误:空输入”);
返回false;
}
如果(提交输入!=“”){
//被接纳的chars(白名单)
var wl_模式=/[A-z][0-9]/;
//为提交的字符串中的每个字符循环
for(提交输入中的字符){
//如果字符串上存在坏字符,则返回false
var result=char.match(wl_pattern);//反转此处警报(result)的匹配;
返回false;
}
返回true;
}
}

试验箱
搜寻

您不必对每个字符进行模式匹配,只需对字符串进行匹配,就可以对a-z或0-9之外的任何字符返回匹配。如果regexp match方法找到匹配项,则返回一个对象;如果未找到匹配项,则返回一个null。因此,在本例中,要将其转换为布尔值,只需在前面加上!,这将反转它,如果你想把它变成一个布尔值,然后在前面加上一个

function jsValidationAndSanitization() {
  /**
      Validate and sanitize every input that comes from an HTML form.
      @return boolean
  **/

  var submittedInput = document.forms["form"]["search_input"].value;

  if (submittedInput == "") {
    console.log("error: empty input");
    return false;
  }
  if (submittedInput != "") {
    // non-admitted chars ( black list )
    var wl_pattern = /[^A-z0-9]+/;
    var result = submittedInput.match(wl_pattern);
    if (result) { console.log(result); }
    return !result;
  }
  return false; // Catch all to return false
}

您不必对每个字符进行模式匹配,只需对字符串进行匹配,就可以为a-z或0-9之外的任何字符返回匹配。如果regexp match方法找到匹配项,则返回一个对象;如果未找到匹配项,则返回一个null。因此,在本例中,要将其转换为布尔值,只需在前面加上!,这将反转它,如果你想把它变成一个布尔值,然后在前面加上一个

function jsValidationAndSanitization() {
  /**
      Validate and sanitize every input that comes from an HTML form.
      @return boolean
  **/

  var submittedInput = document.forms["form"]["search_input"].value;

  if (submittedInput == "") {
    console.log("error: empty input");
    return false;
  }
  if (submittedInput != "") {
    // non-admitted chars ( black list )
    var wl_pattern = /[^A-z0-9]+/;
    var result = submittedInput.match(wl_pattern);
    if (result) { console.log(result); }
    return !result;
  }
  return false; // Catch all to return false
}

正则表达式可以同时检查多个字符,因此更好的正则表达式可以消除循环字符的需要。你的方法也会起作用,但是你需要用“结果”做一些事情。使用完美的regexp,整个函数将
returnsomeregexp.test(submittedInput)我不知道“反转匹配”是什么意思,也不知道它如何帮助您解决这个问题。JS之外的其他方法是使用输入类型number而不是输入类型text,或者使用输入的pattern属性将regexp放在那里进行验证。在服务器端,也要执行相同的清理。我想反转input.match的匹配(先键入),只允许字符和数字,仅仅是因为我想使用白名单方法,这个概念就是@Harry Chilinguerian在下面所说的。正则表达式可以同时检查多个字符,因此更好的正则表达式可以消除循环字符的需要。你的方法也会起作用,但是你需要用“结果”做一些事情。使用完美的regexp,整个函数将
returnsomeregexp.test(submittedInput)我不知道“反转匹配”是什么意思,也不知道它如何帮助您解决这个问题。JS之外的其他方法是使用输入类型number而不是输入类型text,或者使用输入的pattern属性将regexp放在那里进行验证。在服务器端,也要执行相同的清理。我想反转input.match的匹配(先键入),只允许字符和数字,仅仅因为我想使用白名单方法,这个概念就是@Harry Chilinguerian在下面所说的。