我有以下代码和平:
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#$]+$
它将匹配包含一个或多个单词字符[A-Za-z0-9_]
、散列#
和美元的任何内容$
。单词字符不包含空格,因此应该可以。
我添加了锚点^
,$
并确保它只匹配整个字符串(这是你想要的吗?)如果你只是希望它在你的示例中的开头匹配,那么删除$
.
请注意,与您的示例一样,您需要\
像这样在您的 java 代码中转义:
Pattern p = Pattern.compile("^[\\w#$]+$");
添加到其他答案:我认为您正在寻找类似的模式,这意味着:从开头()到结尾( )"^\\S*$"
匹配任意数量的非空格字符()。\\S*
^
$