1

我有以下代码和平:

     Pattern p = Pattern.compile("^\\d|^\\W|^\\s");
     Matcher m = p.matcher("stack overflow");

有人可以解释上述正则表达式模式吗?它能做什么 ?我必须让它在现有功能之间不允许有空格。例如,它不应该允许“堆栈溢出”,因为它包含空格。

编辑

我尝试过的以下模式对我来说效果很好。谢谢大家的建议:

[a-zA-Z0-9_$#]
4

2 回答 2

8

您的正则表达式匹配单个数字,或任何不是单词的单个字符或任何作为空白字符的单个字符。

这三个备选方案中的任何一个都必须从主题的开头开始,因为您^在每个备选方案中都有。

根据您的描述,我认为您想要这样的表达:

^[\w#$]+$

它将匹配包含一个或多个单词字符[A-Za-z0-9_]、散列#和美元的任何内容$。单词字符不包含空格,因此应该可以。

我添加了锚点^$并确保它只匹配整个字符串(这是你想要的吗?)如果你只是希望它在你的示例中的开头匹配,那么删除$.

请注意,与您的示例一样,您需要\像这样在您的 java 代码中转义:

Pattern p = Pattern.compile("^[\\w#$]+$");
于 2012-04-13T10:05:16.653 回答
4

添加到其他答案:我认为您正在寻找类似的模式,这意味着:从开头()到结尾( )"^\\S*$"匹配任意数量的非空格字符()。\\S*^$

于 2012-04-13T10:08:35.030 回答