c# regex.ismatch 使用变量

Posted

技术标签:

【中文标题】c# regex.ismatch 使用变量【英文标题】:c# regex.ismatch using a variable 【发布时间】:2013-01-04 09:28:41 【问题描述】:

我有以下代码可以正常工作,但我需要用变量替换站点地址...

string url = HttpContext.Current.Request.Url.AbsoluteUri;  // Get the URL

bool match = Regex.IsMatch(url, @"(^|\s)http://www.mywebsite.co.uk/index.aspx(\s|$)");

我尝试了以下方法,但它不起作用,有什么想法吗???

string url = HttpContext.Current.Request.Url.AbsoluteUri;  // Get the URL
string myurl = "http://www.mywebsite.co.uk/index.aspx";

bool match = Regex.IsMatch(url, @"(^|\s)"+myurl+"(\s|$)");

【问题讨论】:

错误信息是什么? 到底是什么问题?当你将它作为变量传递时它只是不匹配还是抛出异常? 错误在 \s 附近,我设法通过转义修复它:\\s @Scott 看看 Mark Byers 的回答。 【参考方案1】:

您缺少@

bool match = Regex.IsMatch(url, @"(^|\s)" + myurl + @"(\s|$)");

您需要额外的@ 的原因是@ 仅适用于紧随其后的字符串文字。它不适用于该行的整个其余部分。

您还应该考虑escaping 您的网址:

bool match = Regex.IsMatch(url, @"(^|\s)" + Regex.Escape(myurl) + @"(\s|$)");

【讨论】:

以上是关于c# regex.ismatch 使用变量的主要内容,如果未能解决你的问题,请参考以下文章

C#正则验证大全 Regex.IsMatch()正则表达式验证

c#大于等于3小于等于99正则表达式怎么写? (Regex.IsMatch(textBox1.Text, "[3-9]1,"))

C# RegEx:忽略大小写...在模式中?

C# Regex类用法

为啥用 Regex.IsMatch 检查这个字符串会导致 CPU 达到 100%?

C#使用正则表达式检测数字 char 和韩文