正则expression式匹配字母数字和空格

我在这里做错了什么?

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

只是一个FYI

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

实际上会更好

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

这个:

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

\ x20是“空格”字符的asciihex

你可以添加更多的个人angular色,你想被允许。 如果你想要例如“?” 在返回stringadd \ x3f中确定

我知道了:

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

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

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

你告诉它要做的是用空string或任何前导空格replace不是字母数字的所有内容。 我认为你的意思是说,空格可以不replace – 尝试将\ s移动到[]类中。

以下正则expression式用于文本框中的空间包含。

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

这对我来说很好。

似乎有两个问题。

  1. 您正在使用与该行起始处匹配的[]外的^
  2. 你不使用*或+这意味着你只会匹配一个字符。

我想你想要下面的正则expression式@“([^ a-zA-Z0-9 \ s])+”

方括号内的回音表示除了后续范围以外的所有字符。 你想要方括号外的旋律。