Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式在带空格的整数中查找无效字符_C#_Regex_Numbers_Match - Fatal编程技术网

C# 正则表达式在带空格的整数中查找无效字符

C# 正则表达式在带空格的整数中查找无效字符,c#,regex,numbers,match,C#,Regex,Numbers,Match,我想使用正则表达式(regex)查找字符串中的无效字符。字符串是用户输入,当正则表达式发现无效字符时,我想给用户反馈哪些字符无效。示例警告消息:“仅允许0-9和空格。输入为“-10 a 0 b”时发现无效字符:ab” 有效字符串为: 整数 消极还是积极 允许在任何位置有任意数量的空白 例如,这些有效字符串不应与正则表达式匹配: "-100" "- 1 00" " - 1 00" "100" " 1 0 0 " "1 00" 虽然正则表达式应该在这些无效字符串中找到匹配项:

我想使用正则表达式(regex)查找字符串中的无效字符。字符串是用户输入,当正则表达式发现无效字符时,我想给用户反馈哪些字符无效。示例警告消息:“仅允许0-9和空格。输入为
“-10 a 0 b”
时发现无效字符:ab”

有效字符串为:

  • 整数
  • 消极还是积极
  • 允许在任何位置有任意数量的空白
例如,这些有效字符串不应与正则表达式匹配:

"-100"  
"- 1 00"
"  - 1 00"
"100"  
" 1 0 0 "  
"1 00" 
虽然正则表达式应该在这些无效字符串中找到匹配项:

"- 1 a 0 0 b" should match "a" and "b"
"- 1 a 0 0 -" should match "a" and "-"
我有一个适用于正整数的正则表达式,直到我发现我忘了包含负整数:

var regex = new Regex(@"[^0-9\s]")
var invalidCharacters = regex.Matches(text)
我对正则表达式只有非常基本的了解。我尝试对正则表达式求反以包含负整数,但它不起作用:

new Regex(@"(?!-?[0-9\s])")

我希望有人能帮我。如果可以通过删除空格要求更容易地解决这个问题。然后,请忽略空白部分。

我将首先考虑正数-哪些字符串有效?然后用否定的眼光来否定它

我认为这符合您的要求:

(?!\s*-?[\d\s]).
  • \s*
    将匹配开头的任何空白

  • -?
    将可选地匹配连字符

  • [\d\s]
    将匹配数字和空格

  • (?!expression)
    是否定整个表达式的否定查找


  • 末尾的
    是生成匹配项的一种方法。负面环顾只是一个断言,它不会返回任何结果

它为问题中的测试用例生成所需的结果。

您可以使用

var invalidCharacters = Regex.Matches(text, @"[^0-9\s-]|(?<!^\s*)-");

var invalidCharacters=Regex.Matches(文本,@“[^0-9\s-]”|(?是否
“-1”
有效(即,
-
符号前面的多个空格?@Nick是的,在-sign前面的多个空格是有效的。我将此添加到示例中。为什么
-100
100
无效?好的,使用
var invalidCharacters=Regex.Matches(文本,@“[^0-9\s-]|(?不,。给我看代码的位置。结尾的
是什么意思?负面环顾只是一个断言。
允许正则表达式将结果具体化。好的,谢谢。两个答案都很有效。我会接受这个答案,因为我发现正则表达式更容易理解。