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

时间:2015-10-19 05:29:14

标签: java regex

我正在努力使用REGEX并将其用于程序。

输入只需要字母数字键,并且(只允许使用逗号,:,空格,/, - 在特殊字符中)

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

如果可以纠正这一点并且对每个部分进行解释,将不胜感激。

提前致谢。

3 个答案:

答案 0 :(得分:5)

您可以使用a-zA-Z0-9替换\\w[a-zA-Z_0-9]\\S的缩写。此外,\\s是任何字符,但不是空格,您应该使用/。您不需要转义-,甚至^([\w,:\s/-]*)$如果它是第一个或最后一个,因为如果它位于两个字符之间,它可以被解释为范围,您将不得不逃脱它。因此,您可以使用 import java.util.*; public class Main { public static void main(String[] args) { String m="java is great"; String temp=""; System.out.println(m); String store=""; int cnt=0; char [] p=m.toCharArray(); for(int i=p.length-1;i>=0;i--) { if(p[i]==' '||i==0) { if(cnt>=1||i==0) { if(i==0) temp=temp+p[i]; store=store+new StringBuilder(temp).reverse().toString(); temp=""; cnt=0; } if(p[i]==' ') { store=store+p[i]; } } else { temp=temp+p[i]; System.out.println(p[i]); cnt++; } } System.out.println(store); } }

等正则表达式

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

将行首^和行尾$移到群组外 - 例如

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

应该这样做。

相关问题