Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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 验证xss并允许jquery中的所有语言字符_Javascript_Jquery_Regex - Fatal编程技术网

Javascript 验证xss并允许jquery中的所有语言字符

Javascript 验证xss并允许jquery中的所有语言字符,javascript,jquery,regex,Javascript,Jquery,Regex,我想对输入值进行验证,以避免使用正则表达式在js文件中进行SQL注入和跨站点脚本编写 我想允许数字和所有语言字符带有一些字符。但是我无法得到这个的正则表达式 var sampleText=“j'ai les réponses”; var reg=/^[a-zA-ZÀ-0-9\\-\\s]+$/; 如果(sampleText!=“”&&&!注册测试(sampleText)){ 警告(“无效文本”); 返回false; }好吧,这里有几个想法供你玩玩 首先,您不需要在字符类中转义破折号-和空格\s

我想对输入值进行验证,以避免使用正则表达式在js文件中进行SQL注入和跨站点脚本编写

我想允许数字和所有语言字符带有一些字符。但是我无法得到这个的正则表达式

var sampleText=“j'ai les réponses”;
var reg=/^[a-zA-ZÀ-0-9\\-\\s]+$/;
如果(sampleText!=“”&&&!注册测试(sampleText)){
警告(“无效文本”);
返回false;

}
好吧,这里有几个想法供你玩玩

首先,您不需要在字符类中转义破折号
-
和空格
\s
字符

此外,最好将破折号移动到字符类的前面(或末尾),这样正则表达式引擎就不会试图超出它的范围。如果您使用的是
\s
,也不需要空格
,因为它会包含空格

var reg = /^[-a-zA-ZÀ-ÿ0-9\s]+$/;
但是可能会帮助你走上正确的道路的是看看你告诉脚本要做什么。您的逻辑实际上是想看看您的
sampleText
是否与字符类中的任何字符都不匹配。但是因为它匹配了所有的字母,所以您在尝试执行的测试中获得了通过

更好的方法是执行以下操作:

var sampleText="Rocking around the Christmas tree";
var reg = /[^-a-zA-ZÀ-ÿ0-9\s]/;

if (sampleText != "" && reg.test(sampleText)) {
    alert("Invalid Text.");
}
else {
    alert("All of the characters are valid!");
}
通过在类的开头添加插入符号来否定字符类,然后通过删除感叹号来尝试与表达式进行正匹配,如下所示:
reg.test(…

这将要做的是查找不属于允许的字符列表的任何字符,然后将其标记为
无效文本
,如果它遇到的字符不在您的字符类中

编辑:

在再次查看您的字符类后,我认为
À-ÿ
不是一个有效的范围。这些范围取自ASCII表。如果您查看此处,您将看到您正在查找的字符不是表的一部分

因此,当您在正则表达式中创建一个范围时,它允许在它可以找到的范围内添加字符。对于
a-Z
,它正在查找
65-90
的ascii值。但是没有特定字符的范围,因此您必须手动添加它们,如下所示:

var reg = /[^-a-zA-Z0-9\sÀÿé’']/;
在这里,我添加了
é
以及撇号
'
的变体


这对我来说似乎是个坏主意。为什么不使用参数化查询和输出转义呢?在看到您的更新后,我考虑了很多,发现了另一个问题。请参阅我的答案中的
编辑:
。感谢您的回复。如果y其他单词,如我们正在使用的Common,它是不允许的。我希望允许所有语言字符或至少英语和法语。请帮助您需要添加您希望允许的每个字符。因此,将特殊的
c
字符添加到您的字符类中,它应该与该单词匹配。如果您有其他特殊的字符,也添加这些字符。