您好我有以下代码来显示搜索结果。
@foreach (var str in (item.ContentText.Split(new char[] { '?', '<', '!', '<', '^', '>', '*', '>'}).Where(a => a.Contains((string)ViewData["searchTerm"]))))
{
@Html.Raw(Regex.Replace(str, (string)ViewData["searchTerm"],
"<span style='background-color:rgb(245, 234, 157); color:rgb(243, 122, 122)'>" + (string)ViewData["searchTerm"] + "</span>"))
}
</a>
razor中是否有任何reg exp用于忽略区分大小写?
谢谢
答案 0 :(得分:2)
您需要添加RegexOptions.IgnoreCase
作为Regex.Replace
重载的最后一个参数:
@foreach (var str in (item.ContentText.Split(new char[] { '?', '<', '!', '<', '^', '>', '*', '>'}).Where(a => a.Contains((string)ViewData["searchTerm"]))))
{
@Html.Raw(Regex.Replace(str, (string)ViewData["searchTerm"],
"<span style='background-color:rgb(245, 234, 157); color:rgb(243, 122, 122)'>" + (string)ViewData["searchTerm"] + "</span>",
RegexOptions.IgnoreCase))
}
Regex.Replace
的默认设置为RegexOptions.None
,其中包含以下规则(重点区分大小写):
该模式被解释为规范而非ECMAScript正则表达式。
正则表达式模式在输入字符串中从左到右匹配。
比较区分大小写。
^
和$
语言元素匹配输入字符串的开头和结尾。
.
语言元素匹配除\n
以外的所有字符。正则表达式模式中的任何空格都被解释为文字空格字符。
将模式与输入字符串进行比较时,会使用当前文化的约定。
在正则表达式模式中捕获组既是隐式的也是显式的。
注意: System.Text.RegularExpressions
命名空间而非Razor引擎本身提供的所有正则表达式选项。
答案 1 :(得分:1)
使用@RegexOptions.IgnoreCase
,我认为它将为您工作。