InputValidation的正则表达式白名单-AccentInsensitive我希望能够将用户输入限制在有效字符的白名单中,但我不想阻止来自其他文化的人注册。到目前为止我有这个:^[a-zA-Z0-9èéê?àáa???ìí??òóó???ùú?ü-_]*$它允许大多数法国口音,但拉丁字符集中的口音列表是巨大的!我宁愿使用白名单而不是黑名单,以防我遗漏了什么。请注意,这将在C#中工作,但我想使用正则表达式进行客户端验证以确保双方的一致性。当我将它保存到数据库时,我对输入进行HTML编码。是否有更优雅的方法使正则表达式对重音不敏感,但仍然有足够的限制以防止XSS?我不想疏远我的用户。我希望能够有一些标点符号但又不让自己受到XSS攻击,例如,我希望有人输入他们的公司名称:如果有人在雅虎工作,他们应该能够注册。^w+$不能只使用字母数字符号吗,我相信重音符号是可以接受的。fwiw:我使用homebrew函数为所有变音符号返回RegExp:functiondiacritsRegEx(global,caseinsitive,multiline){varmodifiers=(global?'g':'')+(multiline?'m':'')+(区分大小写?'i':'');returnnewRegExp(['[\.\-az\s]|',//[az,.-andspace]'[\300-\306\340-\346]|',//全部重音A,a'[\310-\313\350-\353]|',//全重音E,e'[\314-\317\354-\357]|',//全重音I,i'[\322-\330\362-\370]|',//全重音O,o'[\331-\334\371-\374]|',//全重音U,u'[\321-\361]|',//所有重音N,n'[\307-\347]'//所有重音C,c].join(''),modifiers);在某些正则表达式实现中,一个简单的w将涵盖所有这些。请参阅http://www.regular-expressions.info/charclass.html也许你可以使用像[u00C0-u017E]这样的unicode范围来覆盖所有重音基础(但你应该检查字符映射以确保,因为我不'知道意大利语有什么口音)。如果您想允许字母(带或不带变音符号)和一些标点符号,您可以使用:^[w_-]+$其中w代表任何字母,_-是允许的2个额外标点符号。不要忘记放-最后使用它。对于用户输入的订单,我使用的是:[^ws+/_,.@-]这允许使用电子邮件、邮政编码、名字、姓氏等字符。以上就是C#学习教程:输入验证的正则表达式白名单-重音不敏感分享的所有内容,如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文来自来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
