剥去非ascii字符但允许使用货币符号

时间:2013-02-19 08:59:01

标签: c# regex unicode currency

我使用下面的正则表达式从字符串中删除所有非ascii字符。

String pattern = @"[^\u0000-\u007F]";
Regex rx = new Regex(pattern, RegexOptions.Compiled);
rx.Replace(data," ");

但是,我想允许使用curreny(英镑符号)和商标符号。

我修改了上面的正则表达式,如下所示&这个对我有用。任何人都可以确认正则表达式是否有效吗?

 String pattern = @"[^\u0000-\u007F \p{Sc}]";

基本上,我也希望允许所有货币符号。

1 个答案:

答案 0 :(得分:2)

是的,你的正则表达式是正确的。

您使用代码执行的操作是将正则表达式匹配的字符替换为空字符。

现在,您的正则表达式匹配哪些字符?

除了以外的任何事情:

如果您只想继续允许其他角色,是的,您也可以添加它们(就像您使用\p{Sc}一样。

修改

将来做的时候要小心。正则表达式实际上是[^\u0000-\u007F\p{Sc}](没有空格),尽管在这种情况下它并不重要,因为空格字符已经在ASCII范围内。