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

时间:2008-10-08 04:35:35

标签: c# regex

我在这里做错了什么?

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

8 个答案:

答案 0 :(得分:66)

只是一个FYI

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

实际上会更好像

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

答案 1 :(得分:17)

此:

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

\ x20 是'space'字符的ascii hex

  

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

答案 2 :(得分:12)

我明白了:

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

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

答案 3 :(得分:3)

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

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

答案 4 :(得分:2)

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

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

这对我来说很好。

答案 5 :(得分:1)

似乎有两个问题。

  1. 您正在使用匹配行首
  2. 的[]之外的^
  3. 您没有使用*或+,这意味着您只会匹配单个字符。
  4. 我想你想要以下正则表达式@“([^ a-zA-Z0-9 \ s])+”

答案 6 :(得分:0)

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

答案 7 :(得分:0)

带有空格的底部正则表达式,支持来自不同文化背景的所有键盘字母

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