0

我是正则表达式的新手...

我有一个关于匹配字符串的正则表达式的问题,它只包含:

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();

谢谢!

4

3 回答 3

2

您需要在字符类中包含空格并允许多个字符:

Pattern p = Pattern.compile("[\\sa-zA-Z0-9,']*");
Matcher m = p.matcher("to be or not");
boolean b = m.matches();
于 2012-05-24T13:10:47.783 回答
2

修复您的表达式添加边界:

Pattern p = Pattern.compile("^\\s[a-zA-Z0-9,']+$");

现在您可以说m.find()并确保true仅当您的字符串仅包含枚举符号时才返回。顺便说一句,你一开始是不是错\\s了?这意味着字符串必须从单个空格开始。如果这不是要求,请删除它。

于 2012-05-24T13:12:27.793 回答
1

请注意,\s 将匹配任何空白字符(包括换行符、制表符、回车符等),而不仅仅是空格字符。

你可能想要这样的东西:

"^[a-zA-Z0-9,' ]+$"

于 2012-05-24T13:30:51.653 回答