MVC漂亮的url和正则表达式中的特殊字符

本文关键字:特殊字符 正则表达式 url 漂亮 MVC | 更新日期: 2023-09-27 18:17:20

如何编辑这个正则表达式Regex.Replace(encodedUrl, @"[^a-z0-9]", "-");不删除特殊字符,如ę,ą,ó,ł等?

这是我的方法。我用它来生成漂亮的URL,没有这些字符.,#$%@:;在URL。
    public static string ToSeoUrl(this string url)
    {
        // make the url lowercase
        string encodedUrl = (url ?? "").ToLower();
        // replace & with and
        encodedUrl = Regex.Replace(encodedUrl, @"'&+", "and");
        // remove characters
        encodedUrl = encodedUrl.Replace("'", "");
        // remove invalid characters
        encodedUrl = Regex.Replace(encodedUrl, @"[^a-z0-9]", "-");
        // remove duplicates
        encodedUrl = Regex.Replace(encodedUrl, @"-+", "-");
        // trim leading & trailing characters
        encodedUrl = encodedUrl.Trim('-');
        return encodedUrl;
    }

MVC漂亮的url和正则表达式中的特殊字符

您可以在字符类中添加特殊字符:

@"[^a-z0-9ęąół]"

regex基本上匹配任何不是a-z, 0-9和任何其他字符之间的[] -这是^在开始的意思。

虽然这不能直接回答你的问题,但下面的方法可以去除重音,变音符等。

    public static String RemoveAccentsAndDiacritics(this String s)
    {
        return string.Join(string.Empty,
                           s
                               .Normalize(NormalizationForm.FormD)
                               .Where(c => 
                                  CharUnicodeInfo.GetUnicodeCategory(c) != 
                                      UnicodeCategory.NonSpacingMark));
    }