2013-05-30 91 views
2

我试图让正则表达式的工作,将允许所有字母数字字符(包括大小写和非大写字母以及数字),但也允许空格,正斜杠(/),破折号( - )和加号(+)?正则表达式匹配所有字母数字和某些特殊字符?

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

我不确定它是否有任何区别,但我正在尝试在c#中执行此操作?

回答

4

如果你想允许只有那些,你还需要使用锚点^$

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

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

您还可以通过一个\w代替全班[A-Za-z0-9_],像这样:

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

编辑:

实际上,你可以避开一些逃逸,并避免最后一个精心布置逃逸(即确保-可以是开头或结尾):

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

感谢您的解释,我设法让它工作用你的例子,非常感谢!我得到了大量的单个字符,你的解释不仅解决了我的问题,而且帮助我了解了为什么它不能在第一个地方工作:-) – Apqu

3

你的正则表达式将类似于:

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

这就是所有的字母,数字和/ - +和空格(而不是任何其他空格字符)

的+在结束意味着在至少需要1个字符。如果您想允许空字符串,请将其更改为*。

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个结果行:

  • 测试是否/本+ -Works
  • sec0nd 2部分
  • 第三---部分(我在这里展示空间)
相关问题