不允许在正则表达式中使用空格
本文关键字:空格 正则表达式 不允许 | 更新日期: 2023-09-27 18:35:47
我有这个代码:
private static bool IsTextAllowed(string text)
{
Regex regex = new Regex("[^0-9]+"); // Regex that matches disallowed text
return !regex.IsMatch(text);
}
private void TextboxClientID_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = !IsTextAllowed(e.Text);
}
这允许文本框中有空格,如何防止也插入空格?
在正则表达式中,'s
修饰符转换为 ['r'n't'f ]
,这意味着没有newline
字符,没有tab
字符,没有form feed
字符(打印机用来开始新页面),也没有spaces
。
所以你可以使用正则表达式[^''s]
(你必须使用''
才能制作一个'
,然后最终转换为's
。如果您只使用 's
,它将转换为 s 字符文字。
开头和结尾^
和$
字符分别与字符串的开头和结尾匹配。
因此,您可以使用正则表达式^[^0-9''s]+$
。以下是它的功能的细分:
- 第一个
^
与字符串的开头匹配。 - 接下来,我们将组封闭在
[]
中,这将匹配该组中的任何单个字符 - 在
[]
里面,我们有^0-9''s
:^
字符确保[]
内没有单个字符匹配(将其从任何单个字符切换到没有单个字符),以下都不应为真0-9
部分匹配 0 到 9 之间的任何数字''s
部分创造了字面上的's
.'s
匹配任何空格字符
+
匹配 1 到无限次之间的封闭[]
组- 最后的
$
与字符串的末尾匹配
您的代码可以是:
private static bool IsTextAllowed(string text){
Regex regex = new Regex("^[^0-9''s]+$");
return !regex.IsMatch(text);
}
这是一个正则表达式101测试:https://regex101.com/r/aS9xT0
^[^0-9 ]+$
试试这个。这将根本不允许空格。
*不是正则表达式答案,我对空格字符有同样的问题
我通过在TextBox
上添加PreviewKeyDown
并将e.Handled
设置为true
是否按下空格键来解决此问题,就像这样:
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
e.Handled = e.Key == Key.Space;
}
使用:
@"^[^'d's]+$"
''d ...匹配数字 (0-9)。
''s ...匹配空格字符。
private static bool IsTextAllowed(string text)
{
return Regex.IsMatch(text, @"^[^'d's]+$");
}
你为什么要打扰正则表达式?只需使用:
private static bool IsTextAllowed(string text)
{
return text.All(c => !char.IsWhiteSpace(c));
}
老问题..但是要禁止空格,请使用"任何非空格字符"'S
加上乘数+
。它基本上可以匹配任何内容,甚至是"∆",但没有空格(',''r,''t,''f,''v)
'S+
但是没有空格的数字输入可以很简单,正如@vks提到的;
^[0-9]+$