我是正则表达式的新手......
我有一个关于正则表达式的问题,它将匹配仅包含的字符串:
0-9,a-z,A-Z,空格,逗号和单引号?
如果字符串包含任何不属于上述表达式的char,则该字符无效。
是这样的:
Pattern p = Pattern.compile("\\s[a-zA-Z0-9,']");
Matcher m = p.matcher("to be or not");
boolean b = m.lookingAt();
谢谢!
答案 0 :(得分:2)
您需要在字符类中包含空格并允许多个字符:
Pattern p = Pattern.compile("[\\sa-zA-Z0-9,']*");
Matcher m = p.matcher("to be or not");
boolean b = m.matches();
答案 1 :(得分:2)
修复表达式添加边界:
Pattern p = Pattern.compile("^\\s[a-zA-Z0-9,']+$");
现在您可以说m.find()
并确保仅当您的字符串仅包含枚举符号时才会返回true
。
顺便说一句,你把\\s
放在一开始是错误的吗?这意味着字符串必须从单个空格开始。如果这不是要求,只需删除它。
答案 2 :(得分:0)
请注意\ s将匹配任何空格字符(包括换行符,制表符,回车符等),而不仅仅是空格字符。
你可能想要这样的东西:
“^ [a-zA-Z0-9,'] + $”