C# 正则表达式中的法语/葡萄牙语扩展ASCII符号
我需要编写一个编辑控件掩码,该掩码应该接受C# 正则表达式中的法语/葡萄牙语扩展ASCII符号,c#,regex,french,C#,Regex,French,我需要编写一个编辑控件掩码,该掩码应该接受[a-zA-Z]字母以及扩展的法语和葡萄牙语符号,如[a-zA-Z]。掩码应同时接受大写和小写符号。 如果发现两项建议: [\p{L}] 及 编写这样一个正则表达式的正确方法是什么 更新: 我的问题是关于形成一个应该匹配(而不是过滤)法语和葡萄牙语字符的regexp,以便在编辑控件中显示它。不区分大小写的解决方案对我没有帮助。 [\p{L}]似乎是一个Unicode字符类,我需要一个ASCII正则表达式。 允许使用数字,但允许使用特殊字符,如!@#$
[a-zA-Z]
字母以及扩展的法语和葡萄牙语符号,如[a-zA-Z]
。掩码应同时接受大写和小写符号。
如果发现两项建议:
[\p{L}]
及
编写这样一个正则表达式的正确方法是什么
更新:
我的问题是关于形成一个应该匹配(而不是过滤)法语和葡萄牙语字符的regexp,以便在编辑控件中显示它。不区分大小写的解决方案对我没有帮助。
[\p{L}]似乎是一个Unicode字符类,我需要一个ASCII正则表达式。
允许使用数字,但允许使用特殊字符,如!@#$%^&*)\uz+}{|“?><是不允许的(应过滤)
我发现最有效的变体是[a-zA-Z0-9\u00B5-\u00FF]
问题是为什么[u249;ççççççççççççççççççççç231?
正如我从CP860(葡萄牙语代码页)和CP863(法语代码页)中看到的,它应该在\u0080-\u009F范围内
有人能解释一下吗?字符[uùçççççççççççççççççççççççççççççççç C#字符串是unicode的,它的正则表达式功能也是unicode的: 如果您确实必须指定一个固定的字符范围,那么在C语言中,您也可以按字面意思将其包括在内:
[a-zA-Z0-9µùàçéèçÇ]
或者,正如其他人已经建议的那样,使用“字母”匹配。因此,不需要您定义每个字母表中的字母,您也不需要自己跟上该定义的未来变化:
\p{L}
第三个有效选项是反转规范,只命名不允许使用的标点符号和控制字符。对于服务器端验证,您可以依赖
^\p{L}+$
示例字符串末尾的µ可能重复?我认为即使不区分重音,它也不会等于m?我不需要它不区分大小写。如果用户从法语布局键盘输入µ符号,我需要一个与之匹配的regexp。C#不使用ASCII,因此没有ASCII正则表达式。(没有一种东西叫做扩展ASCII,所以这个术语的使用几乎总是不够充分。)(键盘布局是用户和操作系统之间的问题。也许你在应用程序中考虑的太多了,也许不是。)
\p{L}