我正在使用正则表达式来检查字符串的正确性(我想允许字符A-Z
, a-z
, *
, space
, -
, &
, %
, .
, /
, +
)。我的代码是这样的:
Regex r = new Regex("^[A-Z0-9.$/+%\\- ]+$");
string myString = "ABCDEFGH 12345 $%... A"; //string ok
if (r.IsMatch(myString))
System.Console.WriteLine("String alright!");
这是有效的,一切都很好。现在我只是想,也许我也可以处理不正确的字符串。我想将字符串中的不正确(非正则表达式有效)字符替换为-
. 这可以用Regex.Replace
. 所以我做了这个:
Regex r = new Regex("^[A-Z0-9.$/+%\\- ]+$");
string myString = "HELLO WÖRLD ß~# 50.00$"; //Ö,ß,~,# should be replaced by -
if (r.IsMatch(myString))
System.Console.WriteLine("String alright!");
else
myString = Regex.Replace(myString, r.ToString(), "-");
System.Console.WriteLine(myString);
好吧,这是行不通的!作为输出,我得到:
HELLO WÖRLD ß~# 50.00$
我错过了什么?问题是正则表达式对吗?我可以检查一个字符串是否正确,但我不能正确使用这个正则表达式 Regex.Replace 函数。有没有办法使用 1 个正则表达式来检查字符串是否有效并使用Regex.Replace
?