Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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_Regex_Node.js_Express - Fatal编程技术网

Javascript 正则表达式字符集-以及它们包含的内容

Javascript 正则表达式字符集-以及它们包含的内容,javascript,regex,node.js,express,Javascript,Regex,Node.js,Express,我正在为Node(express)中的字符串输入开发一种非常粗糙的消毒剂: 我已经浏览了一些插件和库,但它们中的大多数要么太复杂,要么太沉重。因此,我决定自己编写几个简单的消毒剂函数 其中之一就是这个,用于硬清理大多数字符串(不是数字…) 我来自瑞典,所以我需要这些信。我注意到这个正则表达式也接受其他字符。。。比如说 问题1) 有什么列表或类似的列表,我可以看到哪些字符实际上被接受,比如这个regex://[^a-ö]+/g 问题2) 我在Node和Express中工作。。。我认为这个简单的函数

我正在为Node(express)中的字符串输入开发一种非常粗糙的消毒剂:

我已经浏览了一些插件和库,但它们中的大多数要么太复杂,要么太沉重。因此,我决定自己编写几个简单的消毒剂函数

其中之一就是这个,用于硬清理大多数字符串(不是数字…)

我来自瑞典,所以我需要这些信。我注意到这个正则表达式也接受其他字符。。。比如说

问题1) 有什么列表或类似的列表,我可以看到哪些字符实际上被接受,比如这个regex://[^a-ö]+/g

问题2) 我在Node和Express中工作。。。我认为这个简单的函数将通过输入字段停止攻击。我错了吗?

问题1:找出答案。:)

在我的系统上


问题2:您希望阻止哪些攻击?不管怎样,答案都是“不,可能不会”

不要弄乱用户数据(我相信,比如说,法国或日本客户会对您的验证产生不满),而是确保在数据进入或退出客户视图时(HTML转义、SQL参数转义等)对其进行清理。

问题1:找出答案。:)

在我的系统上


问题2:您希望阻止哪些攻击?不管怎样,答案都是“不,可能不会”


不要弄乱用户数据(我相信,比如说,法国或日本客户会对您的验证产生不满),而是确保在数据进入或退出客户视图时(HTML转义、SQL参数转义等)对其进行清理。

[x-y]
匹配unicode数字介于x和y之间的字符:

charsBetween = function(a, b) { 
     var a = a.charCodeAt(0), b = b.charCodeAt(0), r = ""; 
     while(a <= b) 
         r += String.fromCharCode(a++); 
     return r 
}
charsBetween("a", "ö")

> "abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö"

这将匹配列表中的拉丁字母和数字+单个字符的范围。

[x-y]
匹配unicode数字介于x和y之间的字符:

charsBetween = function(a, b) { 
     var a = a.charCodeAt(0), b = b.charCodeAt(0), r = ""; 
     while(a <= b) 
         r += String.fromCharCode(a++); 
     return r 
}
charsBetween("a", "ö")

> "abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö"

这与列表中的拉丁字母和数字+单个字符的范围相匹配。

有许多我们实际上不知道的字符,如日语或俄语等。
因此,为了考虑它们,我们需要在正则表达式中使用Unicode范围而不是ASCII范围

我附带了这个正则表达式,它涵盖了整个Unicode表中几乎所有的书面字母,还有一些其他字符,比如数字,以及一些标点符号(中文标点符号已经包含在Unicode范围内)。 很难涵盖所有内容,可能这个范围包含了太多的字符,包括“外来”字符(符号):

所以我用这种方法来测试(必须不是空的):

请记住,这是缺少的字符,如:

:*()&#'\-:%

还有很多其他的。

有很多我们实际上不知道的字符,比如日语或俄语等等。
因此,为了考虑它们,我们需要在正则表达式中使用Unicode范围而不是ASCII范围

我附带了这个正则表达式,它涵盖了整个Unicode表中几乎所有的书面字母,还有一些其他字符,比如数字,以及一些标点符号(中文标点符号已经包含在Unicode范围内)。 很难涵盖所有内容,可能这个范围包含了太多的字符,包括“外来”字符(符号):

所以我用这种方法来测试(必须不是空的):

请记住,这是缺少的字符,如:

:*()&#'\-:%

还有许多其他字符。

由于插入符号,字符类与指定字符不匹配。由于插入符号,字符类与指定字符不匹配。您不想包括处理诸如“Linnéa”、“idé”、“armé”和“müsli”等单词的“ü”和“é”吗?你不想在处理诸如“Linnéa”、“idé”、“armé”和“müsli”之类的词时加入“ü”和“é”吗?
 [^a-zA-Z0-9ÅÄÖåäö\s]
/^[\u0040-\u1FE0\u2C00-\uFFC00-9 ',.?!]+$/i
function validString(str) {
  return str && typeof(str) == 'string' && /^[\u0040-\u1FE0\u2C00-\uFFC00-9 ',.?!]+$/i.test(str);
}
:*()&#'\-:%