【发布时间】:2020-05-31 19:57:50
【问题描述】:
我想使用正则表达式 (regex) 来查找字符串中的无效字符。该字符串是用户输入,当正则表达式发现无效字符时,我想向用户反馈哪些字符无效。警告消息示例:“仅允许 0-9 和空格。发现无效字符:ab”当输入为 "- 10 a 0 b" 时。
一个有效的字符串是:
- 整数
- 消极或积极
- 允许在任何位置有任意数量的空格。
例如,那些 VALID 字符串不应该与正则表达式匹配:
"-100"
"- 1 00"
" - 1 00"
"100"
" 1 0 0 "
"1 00"
虽然正则表达式应该在这些 INVALID 字符串中找到匹配项:
"- 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])")
我希望有人可以帮助我解决这个问题。如果通过删除空格要求可以更容易地解决这个问题。那么请随意忽略空白部分。
【问题讨论】:
-
" - 1"是否有效(即-符号前的开头有多个空格? -
@Nick 是的,前面有多个空格 - 符号有效。我将其添加到示例中。
-
为什么
-100和100无效? -
好的,使用
var invalidCharacters = Regex.Matches(text, @"[^0-9\s-]|(?<!^\s*)-") -
不,it does not。 给我看代码。