3

我试图让一个正则表达式工作,它允许所有字母数字字符(大写和非大写以及数字)但也允许空格、正斜杠(/)、破折号(-)和加号(+)?

我一直在玩 refiddle:http: //refiddle.com/gqr //refiddle.com/gqr但到目前为止没有成功,有人有什么想法吗?

我不确定它是否有什么不同,但我想在 c# 中做到这一点?

4

3 回答 3

5

如果您只想允许这些,您还需要使用锚点^$.

^[a-zA-Z0-9_\s\+\-\/]+$
^                    ^^

这是您的正则表达式,我添加了第二行所示的字符。不要忘记接近结尾的+or*以允许超过 1 个字符(在 的情况下为 0 或更多*),否则正则表达式将尝试仅匹配一个字符,即使使用.Matches.

您还可以将整个班级替换为[A-Za-z0-9_]one \w,如下所示:

^[\w\s\+\-\/]+$

编辑:

您实际上可以避免一些转义,并通过仔细放置避免最后一次转义(即确保-在开头或结尾处):

^[\w\s+/-]+$
于 2013-05-30T10:46:14.700 回答
3

您的正则表达式看起来像:

/[\w\d\/\-\+ ]+/g

这是所有字母、数字和 / - + 和空格(但不是任何其他空白字符)

末尾的 + 表示至少需要 1 个字符。如果要允许空字符串,请将其更改为 *。

于 2013-05-30T10:39:57.787 回答
0

这段代码做到了:

var input = "Test if / this+-works&sec0nd 2 part*3rd    part";
var matches = Regex.Matches(input, @"([0-9a-zA-Z /+-]+)");

foreach (Match m in matches) if (m.Success) Console.WriteLine(m.Value);

输出将有 3 个结果行:

  • 测试 / this+-works 是否有效
  • 第 2 部分
  • 第 3 部分(我在这里用 - 显示了空格)
于 2013-05-30T10:46:07.013 回答