我发现这个问题最受欢迎的答案是:
Regex.Replace(value, "[^a-zA-Z0-9]+", " ", RegexOptions.Compiled);
但是,如果用户在结算时键入非英语名称,此方法将考虑这些非特殊字符并将其删除.
因为我的网站是多语言的,所以我们可以为大多数用户构建.
使其识别Unicode:
var res = Regex.Replace(value, @"[^\p{L}\p{M}p{N}]+", " ");
如果您打算只保留常规数字,请保留[0-9]
.
正则表达式匹配除Unicode字母(\p{L}
),变音符号(\p{M}
)和数字(\p{N}
)之外的一个或多个符号.
你可能会考虑var res = Regex.Replace(value, @"\W+", " ")
,但它会保留,_
因为下划线是一个"单词"字符.