正则表达式匹配字母数字和空格

Joh*_*han 47 c# regex

我在这做错了什么?

string q = "john s!";
string clean = Regex.Replace(q, @"([^a-zA-Z0-9]|^\s)", string.Empty);
// clean == "johns". I want "john s";
Run Code Online (Sandbox Code Playgroud)

Tim*_*Tim 67

只是一个FYI

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

实际上会更好

string clean = Regex.Replace(q, @"[^\w\s]", string.Empty);
Run Code Online (Sandbox Code Playgroud)

  • "\ w"与"a-zA-Z0-9"不同."\ w"包括该范围之外的字符 (10认同)
  • 仅供参考,包括_. (3认同)

小智 17

这个:

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

\ x20是'space'字符的ascii十六进制

您可以添加更多您想要允许的单个字符.如果你想要例如"?" 在返回字符串add \ x3f中没问题.


Joh*_*han 12

我知道了:

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

不知道你可以将\ s放在括号中

  • 这正是我想要的.在Regex.Replace中,我想匹配任何不是字母,数字或空格的东西. (2认同)

小智 5

以下正则表达式用于文本框中的空格包含。

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

这对我来说效果很好。