我有一个RegularExpressionValidator:
ValidationExpression="^(a-zA-Z0-9 '-]+$"
所以这适用于字母数字,空格,撇号和连字符。
有人告诉我,我现在需要它另外用于下划线,&符号'&',逗号,括号和fullstop。
我试过了:
ValidationExpression="^(a-zA-Z0-9 '-_&,().]+$"
但这使它几乎可以接受任何事情。
有人可以告诉我哪里出错了吗?我对Regex比较陌生。
答案 0 :(得分:2)
点表示“任何东西”(除了您的设置,行返回)。如果要匹配点字符,则必须使用反斜杠转义它:
ValidationExpression="^(a-zA-Z0-9 '-_&,()\.]+$"
您可能还需要转义括号和括号,因为它们也是元字符。
答案 1 :(得分:1)
\.
或将其放在像[.]
这样的字符类中。照顾其他任何特殊字符。
您可以找到关于点here的许多有趣信息,请确保检查该网站中的其他链接,它们会让您深入了解正则表达式的工作方式!
希望这有帮助。
答案 2 :(得分:0)
试试这个。将开头[
放入并将-
移至最后。
^[a-zA-Z0-9 '_&,().-]+$
顺便说一句:.
在字符类中没有特定的引用,除了代码本身的语言正则表达式分隔符之外,它没有大多数。
答案 3 :(得分:0)
请查看here和here,了解如何编写包含字母数字,空格(可能只是水平而非垂直),破折号和撇号的内容,以便它能够正确处理Unicode数据。< / p>
代码存在于Java中,但我很确定相同的规则和限制也适用于C♯。简短的故事是你必须用Java写这个:
dashes = "[\\u002D\\u058A\\u05BE\\u1400\\u1806\\u2010\\u2011\\u2012\\u2013\\u2014\\u2015\\u2053\\u207B\\u208B\\u2212\\u2E17\\u2E1A\\u301C\\u3030\\u30A0\\uFE31\\uFE32\\uFE58\\uFE63\\uFF0D]";
horizontal_whitespaces = "[\\u0009\\u0020\\u00A0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000]";
vertical_whitespace = "[\\u000A\\u000B\\u000C\\u000D\\u0085\\u2028\\u2029]";
whitespace = "[\\u000A\\u000B\\u000C\\u000D\\u0020\\u0085\\u00A0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]";
identifier_chars = "[\\pL\\pM\\p{Nd}\\p{Nl}\\p{Pc}[\\p{InEnclosedAlphanumerics}&&\\p{So}]]";
apostrophic_chars = "[\\u0027\\u02BC\\u2019\\uFF07]";
quotation_mark_chars = "[\\u0022\\u0027\\u00AB\\u00BB\\u2018\\u2019\\u201A\\u201B\\u201C\\u201D\\u201E\\u201F\\u2039\\u203A\\u300C\\u300D\\u300E\\u300F\\u301D\\u301E\\u301F\\uFE41\\uFE42\\uFE43\\uFE44\\uFF02\\uFF07\\uFF62\\uFF63]";
leading_punctuation = "[\\p{Ps}\\p{Pi}]";
closing_punctuation = "[\\p{Pe}\\p{Pf}]";
boundary = "(?:(?<=[\\pL\\pM\\p{Nd}\\p{Nl}\\p{Pc}[\\p{InEnclosedAlphanumerics}&&\\p{So}]])(?![\\pL\\pM\\p{Nd}\\p{Nl}\\p{Pc}[\\p{InEnclosedAlphanumerics}&&\\p{So}]])|(?<![\\pL\\pM\\p{Nd}\\p{Nl}\\p{Pc}[\\p{InEnclosedAlphanumerics}&&\\p{So}]])(?=[\\pL\\pM\\p{Nd}\\p{Nl}\\p{Pc}[\\p{InEnclosedAlphanumerics}&&\\p{So}]]))";
太棒了,但确实如此。