正则表达式匹配所有字母数字和某些特殊字符?

时间:2013-05-30 10:37:13

标签: c# .net regex

我试图让正则表达式工作,允许所有字母数字字符(包括大写和非大写字母以及数字),但也允许空格,正斜杠(/),短划线( - )和加号(+)?

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

我不确定它是否有任何区别,但我想在c#中做到这一点?

3 个答案:

答案 0 :(得分:4)

如果您只想 那些,您还需要使用锚点^$

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

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

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

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

编辑:

您实际上可以避免一些转义并避免最后一次转义,并小心放置(即确保-位于开头或结尾处):

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

答案 1 :(得分:3)

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

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

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

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

答案 2 :(得分: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
  • sec0nd 2 part
  • 第3部分(我在这里展示了空格)