Javascript 表单清理
Javascript Form Sanitization
我想验证和清理输入,例如来自 GET 表单请求的 "search",但我缺少有关 Javascript 模式匹配的内容。
这是我目前正在处理的功能:
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 == "") {
alert("error: empty input");
return false;
}
if (submittedInput != "") {
// admitted chars ( white list )
var wl_pattern = /[A-z][0-9]/;
// loop for every chars in the submitted string
for (char in submittedInput) {
// if a bad char is present on the string return false
var result = char.match(wl_pattern); // INVERT THE MATCH OF RE HERE alert(result);
return false;
}
return true;
}
}
<form action="" method="GET" id="form" onsubmit="return jsValidationAndSanitization()">
<fieldset>
<legend>Test box</legend>
<label for="search" id="search_input">Search</label>
<input type="text" id="search_input" name="search_input" />
<input type="submit" id="submit" value="submit" />
</fieldset>
</form>
所以我正在尝试反转 Javascript 模式匹配的匹配项(仅字符和数字),但实际上我没有找到一个很好的方法来完成这个功能。
有什么建议吗?
您不必对每个字符进行模式匹配,您可以只匹配字符串,并且您可以 return 匹配 A-z 或 0-9 之外的任何字符。正则表达式匹配方法 return 如果找到匹配项则为一个对象,如果未找到任何匹配项则为 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
}
我想验证和清理输入,例如来自 GET 表单请求的 "search",但我缺少有关 Javascript 模式匹配的内容。
这是我目前正在处理的功能:
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 == "") {
alert("error: empty input");
return false;
}
if (submittedInput != "") {
// admitted chars ( white list )
var wl_pattern = /[A-z][0-9]/;
// loop for every chars in the submitted string
for (char in submittedInput) {
// if a bad char is present on the string return false
var result = char.match(wl_pattern); // INVERT THE MATCH OF RE HERE alert(result);
return false;
}
return true;
}
}
<form action="" method="GET" id="form" onsubmit="return jsValidationAndSanitization()">
<fieldset>
<legend>Test box</legend>
<label for="search" id="search_input">Search</label>
<input type="text" id="search_input" name="search_input" />
<input type="submit" id="submit" value="submit" />
</fieldset>
</form>
所以我正在尝试反转 Javascript 模式匹配的匹配项(仅字符和数字),但实际上我没有找到一个很好的方法来完成这个功能。
有什么建议吗?
您不必对每个字符进行模式匹配,您可以只匹配字符串,并且您可以 return 匹配 A-z 或 0-9 之外的任何字符。正则表达式匹配方法 return 如果找到匹配项则为一个对象,如果未找到任何匹配项则为 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
}