代码之家  ›  专栏  ›  技术社区  ›  John Sheehan

与字母数字和空格匹配的regex

  •  45
  • John Sheehan  · 技术社区  · 17 年前

    我在这里做错什么了?

    string q = "john s!";
    string clean = Regex.Replace(q, @"([^a-zA-Z0-9]|^\s)", string.Empty);
    // clean == "johns". I want "john s";
    
    8 回复  |  直到 7 年前
        1
  •  64
  •   Tim    14 年前

    只是一个FYI

    string clean = Regex.Replace(q, @"[^a-zA-Z0-9\s]", string.Empty);
    

    实际上会更像

    string clean = Regex.Replace(q, @"[^\w\s]", string.Empty);
    
        2
  •  17
  •   Kapitán Mlíko    12 年前

    这是:

    string clean = Regex.Replace(dirty, "[^a-zA-Z0-9\x20]", String.Empty);
    

    \x20 是“空格”字符的ASCII十六进制

    您可以添加更多要允许的单个字符。 例如,如果你想 “?” 在返回字符串中正常添加 \x3f .

        3
  •  12
  •   John Sheehan    17 年前

    我得到了它:

    string clean = Regex.Replace(q, @"[^a-zA-Z0-9\s]", string.Empty);
    

    不知道你可以把它放在括号里

        4
  •  3
  •   zigdon    17 年前

    我怀疑^不会像你认为的那样在角色类之外工作。

    你要做的是用空字符串或任何前导空格替换所有不是字母数字的内容。我认为您的意思是,空格可以不替换-请尝试将\s移动到[]类中。

        5
  •  2
  •   TheAlbear    12 年前

    以下regex用于文本框中包含空间。

    Regex r = new Regex("^[a-zA-Z\\s]+");
    r.IsMatch(textbox1.text);
    

    这对我来说很好。

        6
  •  1
  •   JaredPar    17 年前

    似乎有两个问题。

    1. 您在与行首匹配的[]外部使用^
    2. 您没有使用*或+表示只匹配一个字符。

    我想您需要以下regex@“([^a-za-z0-9\s])+”

        7
  •  0
  •   Windows programmer    17 年前

    方括号内的扬抑符表示除后续范围之外的所有字符。你想要方括号外的扬抑符。

        8
  •  0
  •   zamoldar    7 年前

    底部带有空格的regex,支持来自不同文化的所有键盘字母

     string input = "78-selim güzel667.,?";
     Regex regex = new Regex(@"[^\w\x20]|[\d]");
     var result= regex.Replace(input,"");
     //selim güzel