如何使用正则表达式测试字符串的长度?
比如说,如何匹配只含有一个字符的字符串?
^.{1}$
\A.{1}\z
{1}
没有添加任何内容,但是 OP 要求一般情况下如何测试长度。我已经添加了 {1}
(其他人也这样做)以明确如何匹配不同数量的字符。此外,$
是否在“\n”之后匹配取决于正则表达式的风格。由于 OP 尚未指定风格,因此您的陈述并不完全正确。 - Phrogz^.$
但是大多数框架都包含返回字符串长度的方法,你应该使用这些方法来代替正则表达式。
{1}
是多余的,只会增加干扰。 - CanSpice匹配单个字符可以使用 Perl 正则表达式:
/\A.\z/s
\A
表示“字符串的开头”,.
表示“任何字符”,\z
表示“字符串的结尾”。如果没有 \A
和 \z
,则匹配的字符串将是长度大于一个字符的任意字符串。
编辑:但实际上你应该做一些像这样的事情:
if( length($string) == 1 ) {
...
}
/^.\z/s
上述需要Perl兼容的正则表达式。诀窍在于/^.$/可能匹配"x"和"x\n"。添加/s修饰符对此没有帮助。
length()
或strlen()
这样的适当函数? - CanSpice/^.$/
,但我不敢相信你使用的任何语言都没有更好的方法来完成这个任务。 - lonesomeday