用于输入验证的正则表达式白名单-不区分重音符号

如何解决用于输入验证的正则表达式白名单-不区分重音符号

| 我希望能够将用户输入限制为有效字符的白名单,但我不想阻止来自其他文化背景的人注册。 到目前为止,我有这个:
^[a-zA-Z0-9èéêëàáâãäçìíîïòóôõöùúûü-_]*$
它可以使用大多数法语口音,但是拉丁字符集中的口音列表为IMMENSE!如果我错过了某些事情,我宁愿使用白名单而不是黑名单。 注意,这将用于C#,但是我想使用正则表达式进行客户端验证,使双方都保持一致。当我将输入也保存到数据库时,我正在对输入进行HTML编码。 是否有一种更精美的方法使正则表达式不敏感,但仍具有足够的限制性以防止XSS?我不想疏远我的用户。 我希望能够有一些标点符号,但不希望自己受到XSS攻击,例如,我希望有人输入他们的公司名称:如果有人在Yahoo!工作,他们应该可以注册。     

解决方法

^\\w+$
您不能只使用字母数字标志,我相信您可以接受这些重音符号。     ,也许您可以使用unicode范围,例如[\\ u00C0-\\ u017E]适当地覆盖所有重音基础(但是您应该检查字符映射表以确保正确,因为我不知道意大利语具有什么重音)。     ,fwiw:我使用一个家庭酿造函数,该函数为所有直径返回正则表达式:
function diacritsRegEx(global,caseinsitive,multiline){
        var modifiers =   (global       ? \'g\' : \'\') 
                        + (multiline    ? \'m\' : \'\')
                        + (caseinsitive ? \'i\' : \'\'); 
        return new RegExp(
             [\'[\\\\.\\\\-a-z\\\\s]|\',// [a-z,. - 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);
}
    ,在某些正则表达式实现中,简单的“ 3”将覆盖所有这些内容。参见http://www.regular-expressions.info/charclass.html     ,如果要允许字母(带或不带变音符号)和一些标点符号,可以使用:
^[\\w_-]+$
其中\\ w代表任何字母,而_-是允许的2个允许的额外标点符号。不要忘记使用-结尾。     ,对于用户输入的订购单,我正在使用以下格式:[^ \\ w \\ s + \\ /_,.@-] 这允许电子邮件,邮政编码,名字,姓氏等字符。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?