如何使用正则表达式测试字符串的长度?
例如,如果字符串只包含1个字符,我如何匹配?
答案 0 :(得分:3)
^.$
但是大多数框架都包含将返回字符串长度的方法,你应该使用它而不是正则表达式。
答案 1 :(得分:3)
锚定到字符串的开头和结尾并匹配一个字符。在许多语言中:
^.{1}$
在Ruby的正则表达式中:
\A.{1}\z
答案 2 :(得分:1)
匹配单个字符(使用Perl正则表达式):
/\A.\z/s
\A
表示“字符串的开头”,.
表示“任意字符”,\z
表示“字符串的结尾”。如果没有\A
和\z
,您将匹配任何超过一个字符的字符串。
编辑:但实际上你应该做的事情是:
if( length($string) == 1 ) {
...
}
(以Perl为例)
Edit2:以前我有/^.$/
但是,正如Seth指出的那样,这允许匹配两个字符长的字符串,其中最后一个字符是\n
。 \A...\z
构造修复了该问题。
答案 3 :(得分:0)
/^.\z/s
以上需要perl兼容的regexp。诀窍是/^.$/可能匹配“x”和“x \ n”。添加/ s修饰符对那里没有帮助。