2015-10-19 2141 views
1

我正在努力使用REGEX,并要求它为程序。正则表达式只允许某些特殊字符,并且还包括字母数字字符

输入仅需要字母数字键和也(仅允许逗号,:,空间,/, - 在特殊字符)

我试图=(^ [A-ZA-Z0-9,:\ S/- ] * $) 据我了解,如果我错了,请纠正我。 a-zA-Z0-9 - 字母数字键。 ,: - 逗号和冒号 \ S - 空间 /- 我不知道如何表示一个正斜杠,因此我逃脱它 - - 短跑也不知道是否需要逃脱它。

将不胜感激,如果这可以纠正,也是每个部分的解释。

在此先感谢。

+0

http://stackoverflow.com/questions/13946651/matching-special-characters-and-letters-in-regex –

回答

1

您可以用\\w替换a-zA-Z0-9,这是[a-zA-Z_0-9]的简称。此外,\\S是任何字符,但不是空白,您应该使用\\s。如果它是第一个或最后一个,则不需要转义/,甚至-,因为如果它位于两个字符之间,它可能会被解释为范围,您必须将其转义。所以,你可以让你的正则表达式像^([\w,:\s/-]*)$

+0

感谢您的快速回复帮助了很多。 –

1

移动^线的开始和结束$线组外 - 像

^([a-zA-Z0-9,:\S/-]*)$ 

应该这样做。

+0

感谢快速回复,但尝试这个它仍然允许#$%!#不知道我是否正确实施它。 –

+0

这是因为我错过了斯坦尼斯拉夫指出的事实 - 'S'是一个大写'S';) – ClasG

2
  1. \S速记除空白任何字符,你想要什么刚好相反相匹配。小写字母\s与空格[\t\v\n\r\f ]相符。但是如果你只想要空格,只需在角色类中放置一个空格。
  2. 连字符-需要在字符内部进行转义,除非它是字符类中的第一个或最后一个字符,但您可以随时转义以确保其可用性。
  3. 斜杠/不需要转义。他们在其他语言中使用模式分隔符进行转义。即:/regex/i
  4. 除了连字符和短手,只有反斜杠\\和右括号\]需要转义。
  5. 还记得,你总是需要使用双反斜杠(一个由java解释,另一个由正则表达式引擎)。

正则表达式

pattern = "^[a-zA-Z0-9 ,:/\\-]*$" 
+0

令人惊叹的答案和感谢的解释:)。 –

相关问题