我试图让正则表达式工作,允许所有字母数字字符(包括大写和非大写字母以及数字),但也允许空格,正斜杠(/),短划线( - )和加号(+)?
我一直在玩一个小提琴:http://refiddle.com/gqr但到目前为止还没有成功,有人有什么想法吗?
我不确定它是否有任何区别,但我想在c#中做到这一点?
答案 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个结果行: