我试图让正则表达式的工作,将允许所有字母数字字符(包括大小写和非大写字母以及数字),但也允许空格,正斜杠(/),破折号( - )和加号(+)?正则表达式匹配所有字母数字和某些特殊字符?
我一直在玩refiddle:http://refiddle.com/gqr但到目前为止没有成功,任何人的任何想法?
我不确定它是否有任何区别,但我正在尝试在c#中执行此操作?
我试图让正则表达式的工作,将允许所有字母数字字符(包括大小写和非大写字母以及数字),但也允许空格,正斜杠(/),破折号( - )和加号(+)?正则表达式匹配所有字母数字和某些特殊字符?
我一直在玩refiddle:http://refiddle.com/gqr但到目前为止没有成功,任何人的任何想法?
我不确定它是否有任何区别,但我正在尝试在c#中执行此操作?
如果你想允许只有那些,你还需要使用锚点^
和$
。
^[a-zA-Z0-9_\s\+\-\/]+$
^ ^^
这是你的正则表达式,我添加了字符,如第二行所示。不要忘记+
或*
接近结束允许超过1个字符(*
的情况下为0或更多),否则正则表达式将尝试仅匹配一个字符,即使使用.Matches
也是如此。
您还可以通过一个\w
代替全班[A-Za-z0-9_]
,像这样:
^[\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个结果行:
感谢您的解释,我设法让它工作用你的例子,非常感谢!我得到了大量的单个字符,你的解释不仅解决了我的问题,而且帮助我了解了为什么它不能在第一个地方工作:-) – Apqu