我正在尝试匹配一个以 @ 开头的字符串,可以包含任意数量的字母或数字,但最多只能包含一个空格(或零个空格)。 到目前为止,我的代码如下:
@([A-Za-z0-9]+)
这个问题需要匹配字符但不能包含空格。我认为我需要使用\s{0,1},但是不确定应该放在哪里。有人能帮忙吗?
谢谢。
@[A-Za-z0-9]* ?[A-Za-z0-9]*
解释:
@
以字面意义的 @ 开始
[A-Za-z0-9]
任何字母或数字
*
字母或数字可以为长度 {0,无穷大}
?
空格字符,出现0次或1次
[A-Za-z0-9]*
如果有空格,则是任意数量的尾随字母或空格
@
符号。 - Avinash Rajfind
方法,这些锚非常重要,否则你将会为每个符合模式的子字符串得到一个结果。例如,对于abc@def
,如果你不使用锚,find
方法将返回@def
。 - Casimir et Hippolytes =“我正在寻找id = @abc def今天,希望我能找到它!”
Find会返回 @abc def
,而匹配将返回 false
。 - Adam Yost@
开头的单词,后跟任意数量的字母或数字,并带有可选空格。^@[a-zA-Z0-9]+ ?[a-zA-Z0-9]*$
Java模式将是:
"^@[a-zA-Z0-9]+ ?[a-zA-Z0-9]*$"
\s
也允许制表符和换行符。如果它们只允许空格,那就不好了,因为它将接受 \t
或 \n
。 - Adam Yost您可以使用带有负向先行断言的正则表达式:
^@((?!(?:\S* ){2})[A-Za-z0-9 ]+)$
abc[空格]
吗?也就是说,它可以以空格结尾吗? - TheLostMind