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