2013-02-19 90 views
3

我正在使用下面的正则表达式去掉字符串中的所有非ASCII字符。去掉非ASCII字符,但允许使用货币符号

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

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

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

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

基本上,我希望让所有货币符号了。

+0

每当我要回答的时候,你编辑曲注意:P – 2013-02-19 09:10:13

+0

对不起。完成编辑:) – NoobDeveloper 2013-02-19 09:15:47

+1

是的,你的正则表达式是正确的。它将匹配除您指定的范围('0000-007F')或货币符号字符以外的任何内容。请参阅'\ p {Sc}'的含义:http://www.regular-expressions.info/unicode.html#prop – 2013-02-19 09:19:03

回答

2

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

你在做什么你的代码是用空字符替换正则表达式匹配的字符。

现在,你的正则表达式匹配什么字符?

如果你只是想继续允许一些其他字符,是的,你可以把他们加入(就像你与\p{Sc}

编辑:

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