问题是从域名中删除一些奇怪的字符,但保留特殊的unicode字符,如重音字母(德语,波兰语的丹麦语) 例如:radisson-blu.es,你看不到,但ss之间有额外的字符。 (尝试复制到记事本看看)。
我见过很多关于类似问题的帖子,但是每个解决方案都没有删除那个特殊字符,或者删除它,还有其他我需要保留的特殊字符。
答案 0 :(得分:4)
用空字符串
替换正则表达式[^\w\s.,!@#$%^&*()=+~`-]
答案 1 :(得分:1)
你(不)看到的角色是U + 00AD Soft Hyphen。您可以使用\u00ad
以正则表达式引用它,例如:
Regex.Replace(str, @"\u00ad", "");
但对于单字符替换,您也可以使用string.Replace
。
答案 2 :(得分:0)
'\xAD'
是一个软连字符(代码点的名称为"SOFT HYPHEN"
)。
根据Unicode代码点数据库,其类别为"Cf"
(或"Format"
),因此可以与正则表达式@"\p{Cf}"
匹配。
奇怪的是,Microsoft Visual C#2010 Express表示它与@"\p{Cf}"
不匹配,而是匹配@"\p{Pd}"
("Dash Punctuation"
),与普通连字符相同。
答案 3 :(得分:0)
这对我有用:
[\x00-\x1f]|[\x81\x8d\x8d\x8f\x90\x9d\xa0\u2060\uFEFF]