正则表达式,仅允许某些特殊字符,还包括字母数字字符

Tin*_*son 3 java regex

我在REGEX上苦苦挣扎,并且需要一个程序来使用它。

输入仅需要字母数字键,并且(仅允许逗号,:,空格,/,-以特殊字符表示)

我已经尝试过=(^ [a-zA-Z0-9,:\ S /-] * $)据我了解,如果我错了,请指正。a-zA-Z0-9-字母数字键。,:-逗号和冒号\ S-空间--我不确定如何表示正斜杠,因此我将其转义了--Dash也不确定是否需要将其转义。

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

提前致谢。

Sta*_*lav 6

您可以替换a-zA-Z0-9只有\\w这是短期的[a-zA-Z_0-9]。此外,可以\\S是任何字符,但不能为空格,\\s而应使用a 代替。您无需转义/,即使-它是第一个还是最后一个,因为如果将其置于两个字符之间,则可以将其解释为范围,并且您必须对其进行转义。因此,您可以使您的正则表达式像^([\w,:\s/-]*)$


Mar*_*ano 5

  1. \S简写可以匹配除空格之外的任何字符,与您想要的正好相反。小写字母\s匹配空格[\t\v\n\r\f ]。但如果你只想要空格,只需在字符类中添加一个空格即可。
  2. 连字符-需要在字符内转义,除非它是字符类中的第一个或最后一个字符,但为了确定起见,您始终可以转义它。
  3. 斜杠/不需要转义。它们在其他语言中被转义,您可以将它们用作模式分隔符。IE:/regex/i
  4. 除了连字符和简写之外,只有反斜杠\\和右括号\]需要转义。
  5. 请记住,在中,您始终需要使用双反斜杠(一个由 java 解释,另一个由正则表达式引擎解释)。

正则表达式

pattern = "^[a-zA-Z0-9 ,:/\\-]*$"
Run Code Online (Sandbox Code Playgroud)