【发布时间】:2016-04-28 19:59:30
【问题描述】:
我正在尝试使用正则表达式处理同一字符串中的多种不同情况。但是当我使用下面的代码时,只有最后一个表达式会起作用。所以 dobbel stars(**) 将按原样发布,但下划线(_) 将由replace()函数处理。
[HttpPost]
[ValidateInput(false)]
public ActionResult Comment(Models.CommentModel s)
{
Regex fat = new Regex(@"\*\*(.*?)\*\*");
Regex italic = new Regex(@"_(.*?)_");
s.comment = fat.Replace(HttpUtility.HtmlEncode(s.comment), "<b>$1</b>");
s.comment = italic.Replace(HttpUtility.HtmlEncode(s.comment), "<i>$1</i>");
var db = new WebApplication1.Models.ApplicationDbContext();
if (ModelState.IsValid)
{
if (file != null)
{
db.Comments.Add(s);
db.SaveChanges();
return RedirectToAction("Comment");
}
return View(s);
}
为了减少代码量,我尝试像这样将italic和fatstring 合并在一起:Regex(@"\*\*(.*?)\*\*|_(.*?)_"); 但是我还有另一个问题,Regex 怎么知道区别?
【问题讨论】:
-
输入是什么?
-
stackoverflow.com/questions/1732348/… 为什么要用正则表达式解析 html?
标签: c# regex asp.net-mvc