Javascript 验证xss并允许jquery中的所有语言字符
我想对输入值进行验证,以避免使用正则表达式在js文件中进行SQL注入和跨站点脚本编写 我想允许数字和所有语言字符带有一些字符。但是我无法得到这个的正则表达式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
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
字符添加到您的字符类中,它应该与该单词匹配。如果您有其他特殊的字符,也添加这些字符。