繁体   English   中英

正则表达式删除特殊/不可见的字符

[英]Regex to remove special/invisible characters

问题是从域名中删除一些奇怪的字符,但保留特殊的unicode字符,如重音字母(德语,波兰语的丹麦语)例如:radisson-blu.es,你看不到,但ss之间有额外的字符。 (尝试复制到记事本看看)。

我已经看过很多关于类似问题的帖子,但是每个解决方案都没有删除那个特殊字符,或者它正在删除它,还有其他需要保留的特殊字符。

用空字符串替换正则表达式[^\\w\\s.,!@#$%^&*()=+~`-]

你(不)看到的角色是U + 00AD Soft Hyphen。 您可以使用在正则表达式中引用它,例如:

Regex.Replace(str, @"\u00ad", "");

但对于单字符替换,您也可以使用string.Replace

'\\xAD'是一个软连字符(代码点的名称是"SOFT HYPHEN" )。

根据Unicode代码点数据库,其类别是"Cf" (或"Format" ),因此它可以与正则表达式@"\\p{Cf}"匹配。

奇怪的是,Microsoft Visual C#2010 Express表示它与@"\\p{Cf}"不匹配,而是匹配@"\\p{Pd}""Dash Punctuation" ),与普通连字符相同。

这对我有用:

[\x00-\x1f]|[\x81\x8d\x8d\x8f\x90\x9d\xa0\u2060\uFEFF]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM