需要一个正则表达式的字段,它应该允许特殊字符,字母数字字符和空格

时间:2012-01-09 15:04:52

标签: java regex sequence match

我正在使用以下正则表达式:

[a-zA-Z0-9-#.()/%&\\s]{0,19}.

该字段的要求是它应该允许任何事物,字段大小应该是19。 如果有任何更正,请告诉我。非常感谢。

3 个答案:

答案 0 :(得分:2)

您只需要转义特殊字符即可。尝试:

[a-zA-Z0-9\-#\.\(\)\/%&\s]{0,19}

您可以在http://rubular.com/

上测试正则表达式

答案 1 :(得分:0)

只需转义破折号-或将其放在角色类的开头或结尾处:

[a-zA-Z0-9\\-#.()/%&\\s]{0,19}

[-a-zA-Z0-9#.()/%&\\s]{0,19}

[a-zA-Z0-9#.()/%&\\s-]{0,19}

答案 2 :(得分:0)

你的正则表达式至少在某种程度上是错误的 - 如果你认为连字符是一个“特殊字符”,那么你应该把它放在范围的开头或结尾。所以:[a-zA-Z0-9#.()/%&\s-]{0,19}

在正则表达式本身的上下文中“特殊”的字符通常不会被解析,如果它们在一个范围内。所以你可以使用.()。但请检查您的解析器,以确保它了解\s的含义。放一个空格可能更简单。

此外,如果您的正则表达式解析器倾向于使用斜杠分隔正则表达式,那么您可能必须在范围的中间转义斜杠:[a-zA-Z0-9#.()\/%&\s-]{0,19}