我有这段代码:
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);
}
这允许文本框中的空格,如何防止插入空格?
答案 0 :(得分:2)
在正则表达式中,\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);
}
这是regex101测试:https://regex101.com/r/aS9xT0
答案 1 :(得分:1)
使用:
@"^[^\d\s]+$"
\ d ...匹配一个数字(0-9)。
\ s ...匹配空格字符。
private static bool IsTextAllowed(string text)
{
return Regex.IsMatch(text, @"^[^\d\s]+$");
}
答案 2 :(得分:1)
^[^0-9 ]+$
试试这个。这根本不允许有空格。
答案 3 :(得分:1)
*不是正则表达式的答案,我对space char的问题也有同样的问题
我通过在PreviewKeyDown
上添加TextBox
并将e.Handled
设置为true
来修复此问题(如果已按下空格键),就像这样:
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
e.Handled = e.Key == Key.Space;
}
答案 4 :(得分:1)
你为什么要打扰正则表达式?只需使用:
<TextView
android:id="@+id/tv_cal_burnt"
android:layout_height="0dp"
...
答案 5 :(得分:1)
古老的问题..但是,要禁止使用空格,请使用“任何非空格字符” \S
和乘数+
。它将基本上匹配所有内容,甚至是'∆',但没有空格(\ n,\ r,\ t,\ f,\ v)
\S+
但是就像@vks所提到的那样,没有空格的数字输入就可以了;
^[0-9]+$