加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何在这种情况下使用Regex.Replace?

发布时间:2020-12-16 01:53:36 所属栏目:百科 来源:网络整理
导读:我正在使用正则表达式检查字符串的正确性(我想允许字符A-Z,a-z,*,空格,–,,%,.,/).我的代码是这样的: Regex r = new Regex("^[A-Z0-9.$/+%- ]+$");string myString = "ABCDEFGH 12345 $%... A"; //string okif (r.IsMatch(myString)) System.Console.Wri
我正在使用正则表达式检查字符串的正确性(我想允许字符A-Z,a-z,*,空格,–,&,%,.,/).我的代码是这样的:

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?

解决方法

如果要(匹配和)替换与验证表达式中的字符不匹配的字符,则需要另一个表达式来专门匹配这些字符.例如:

[^A-Z0-9.$/+%- ]

可以用作:

myString = Regex.Replace(myString,@"[^A-Z0-9.$/+%- ]","-");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读