我试图让一个正则表达式工作,它允许所有字母数字字符(大写和非大写以及数字)但也允许空格、正斜杠(/)、破折号(-)和加号(+)?
我一直在玩 refiddle:http: //refiddle.com/gqr //refiddle.com/gqr但到目前为止没有成功,有人有什么想法吗?
我不确定它是否有什么不同,但我想在 c# 中做到这一点?
我试图让一个正则表达式工作,它允许所有字母数字字符(大写和非大写以及数字)但也允许空格、正斜杠(/)、破折号(-)和加号(+)?
我一直在玩 refiddle:http: //refiddle.com/gqr //refiddle.com/gqr但到目前为止没有成功,有人有什么想法吗?
我不确定它是否有什么不同,但我想在 c# 中做到这一点?
如果您只想允许这些,您还需要使用锚点^
和$
.
^[a-zA-Z0-9_\s\+\-\/]+$
^ ^^
这是您的正则表达式,我添加了第二行所示的字符。不要忘记接近结尾的+
or*
以允许超过 1 个字符(在 的情况下为 0 或更多*
),否则正则表达式将尝试仅匹配一个字符,即使使用.Matches
.
您还可以将整个班级替换为[A-Za-z0-9_]
one \w
,如下所示:
^[\w\s\+\-\/]+$
编辑:
您实际上可以避免一些转义,并通过仔细放置避免最后一次转义(即确保-
在开头或结尾处):
^[\w\s+/-]+$
您的正则表达式看起来像:
/[\w\d\/\-\+ ]+/g
这是所有字母、数字和 / - + 和空格(但不是任何其他空白字符)
末尾的 + 表示至少需要 1 个字符。如果要允许空字符串,请将其更改为 *。
这段代码做到了:
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 个结果行: