Csharp/C#教程:用于输入validation的正则表达式白名单 – 重音不敏感分享


用于输入validation的正则表达式白名单 – 重音不敏感

我希望能够将用户输入限制为有效字符的白名单,但我不想阻止来自其他文化的人注册。 到目前为止,我有这个:

^[a-zA-Z0-9èéêëàáâãäçìíîïòóôõöùúûü-_]*$ 

它允许大多数法国口音,但拉丁字符集中的重音列表是IMMENSE! 我宁愿使用白名单而不是黑名单,以防我错过了什么。

注意 ,这将适用于C#,但我想使用正则表达式进行客户端validation,以确保双方的一致性。 当我将它保存到数据库时,我是HTML编码输入。

是否有更优雅的方式使正则表达式重音不敏感,但仍然具有足够的限制性来阻止XSS? 我不想疏远我的用户。

我希望能够有一些标点但不能打开自己的XSS攻击,例如,我希望有人输入他们的公司名称:如果有人在雅虎工作,他们应该能够注册。

 ^w+$ 

难道你不能只使用字母数字标志,我相信接受重音符号。

fwiw:我使用home brew函数返回所有diacrits的RegExp:

 function diacritsRegEx(global, caseinsitive, multiline){ var modifiers = (global ? 'g' : '') + (multiline ? 'm' : '') + (caseinsitive ? 'i' : ''); return new RegExp( ['[\.\-az\s]|', // [az, . - and space] '[\300-\306\340-\346]|', // all accented A, a '[\310-\313\350-\353]|', // all accented E, e '[\314-\317\354-\357]|', // all accented I, i '[\322-\330\362-\370]|', // all accented O, o '[\331-\334\371-\374]|', // all accented U, u '[\321-\361]|', // all accented N, n '[\307-\347]' // all accented C, c ] .join(''), modifiers); } 

在一些正则表达式实现中,一个简单的w将涵盖所有这些。 见https://www.regular-expressions.info/charclass.html

也许你可以使用像[ u00C0- u017E]这样的unicode范围,可以覆盖所有重音基础(但你应该检查字符图以确保,因为我不知道意大利语有什么口音)。

如果你想允许字母(带或不带变音符号)和一些标点符号你可以使用:

 ^[w_-]+$ 

其中 w代表任何字母,_-是允许的2个额外标点符号。 别忘了把 – 最后用了。

对于用户输入的订单,我正在使用:[^ w s + / _,。@ – ]这允许使用电子邮件,邮政编码,免费精选名字大全,姓氏等字符。

上述就是C#学习教程:用于输入validation的正则表达式白名单 – 重音不敏感分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1027984.html

(0)
上一篇 2022年1月10日
下一篇 2022年1月10日

精彩推荐