Java正则表达式

Java正则表达式,java,regex,pattern-matching,matcher,Java,Regex,Pattern Matching,Matcher,我有一个下面的代码和平: Pattern p = Pattern.compile("^\\d|^\\W|^\\s"); Matcher m = p.matcher("stack overflow"); 有人能解释一下上面的正则表达式模式吗?它是干什么的? 我必须使其与现有功能之间不允许有空格。它不应该允许“堆栈溢出”,因为它包含空格 编辑 我试过的以下模式对我来说很好。谢谢大家的建议: [a-zA-Z0-9_$#] 正则表达式要么匹配一个数字,要么匹配不是单词的任何单个字

我有一个下面的代码和平:

     Pattern p = Pattern.compile("^\\d|^\\W|^\\s");
     Matcher m = p.matcher("stack overflow");
有人能解释一下上面的正则表达式模式吗?它是干什么的? 我必须使其与现有功能之间不允许有空格。它不应该允许“堆栈溢出”,因为它包含空格

编辑

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

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

正则表达式要么匹配一个数字,要么匹配不是单词的任何单个字符,要么匹配空白字符的任何单个字符

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

根据您的描述,我认为您需要这样一个表达式:

^[\w#$]+$
Pattern p = Pattern.compile("^[\\w#$]+$");
它将匹配任何包含一个或多个单词字符
[A-Za-z0-9\
、哈希
\
和美元
$
。单词字符不包含空格,因此这应该可以工作

我添加了锚定
^
$
,确保它只匹配整个字符串(这是您想要的吗?)。如果您只希望它在开头匹配,如示例所示,请删除
$

请注意,正如在您的示例中一样,您需要在java代码中转义
\
,如下所示:

^[\w#$]+$
Pattern p = Pattern.compile("^[\\w#$]+$");

正则表达式要么匹配一个数字,要么匹配不是单词的任何单个字符,要么匹配空白字符的任何单个字符

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

根据您的描述,我认为您需要这样一个表达式:

^[\w#$]+$
Pattern p = Pattern.compile("^[\\w#$]+$");
它将匹配任何包含一个或多个单词字符
[A-Za-z0-9\
、哈希
\
和美元
$
。单词字符不包含空格,因此这应该可以工作

我添加了锚定
^
$
,确保它只匹配整个字符串(这是您想要的吗?)。如果您只希望它在开头匹配,如示例所示,请删除
$

请注意,正如在您的示例中一样,您需要在java代码中转义
\
,如下所示:

^[\w#$]+$
Pattern p = Pattern.compile("^[\\w#$]+$");

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

因此如何使其不允许在两者之间使用单个或多个空格。我需要单独做吗?不,这应该按原样工作。此操作不允许使用单个或多个空格。@rodion建议使用
\S
也是一个好建议,但会产生类似的结果。我可能更喜欢它,因为它更具体地说明了什么是(不)匹配的。你能提供一些额外的检查,以上述检查在原来的职位?您建议的表达式似乎不适用于少数情况。@Sandeepathak我很乐意添加其他信息,哪些情况不匹配?如果我知道,我可能会更好地理解您的需要。@sandeepathak如果您向我们展示这些情况是什么,以及如何使它们之间不允许有单个或多个空格,那么它将非常有用。我需要单独做吗?不,这应该按原样工作。此操作不允许使用单个或多个空格。@rodion建议使用
\S
也是一个好建议,但会产生类似的结果。我可能更喜欢它,因为它更具体地说明了什么是(不)匹配的。你能提供一些额外的检查,以上述检查在原来的职位?您建议的表达式似乎不适用于少数情况。@Sandeepathak我很乐意添加其他信息,哪些情况不匹配?如果我知道,我可能会更好地理解你的需要。@Sandeepathak如果你告诉我们这些案例是什么,会很有用的。你能提供一些额外的检查,在原始帖子中的上述检查吗?你建议的表达似乎不适用于少数情况。你能提供一些额外的检查,上述检查在原来的职位?你所建议的表达似乎不适用于少数情况。