我使用下面的正则表达式从字符串中删除所有非ascii字符。
String pattern = @"[^\u0000-\u007F]";
Regex rx = new Regex(pattern, RegexOptions.Compiled);
rx.Replace(data," ");
但是,我想允许使用curreny(英镑符号)和商标符号。
我修改了上面的正则表达式,如下所示&这个对我有用。任何人都可以确认正则表达式是否有效吗?
String pattern = @"[^\u0000-\u007F \p{Sc}]";
基本上,我也希望允许所有货币符号。
答案 0 :(得分:2)
是的,你的正则表达式是正确的。
您使用代码执行的操作是将正则表达式匹配的字符替换为空字符。
现在,您的正则表达式匹配哪些字符?
除了以外的任何事情:
0000-007F
\p{Sc}
。请参阅http://regular-expressions.info/unicode.html#prop 如果您只想继续允许其他角色,是的,您也可以添加它们(就像您使用\p{Sc}
一样。
修改强>
将来做的时候要小心。正则表达式实际上是[^\u0000-\u007F\p{Sc}]
(没有空格),尽管在这种情况下它并不重要,因为空格字符已经在ASCII范围内。