Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 用于测试字符串的字符长度的正则表达式_Regex - Fatal编程技术网

Regex 用于测试字符串的字符长度的正则表达式

Regex 用于测试字符串的字符长度的正则表达式,regex,Regex,如何使用regex测试查看字符串的长度 例如,如果一个字符串只包含1个字符,如何匹配它 ^.$ 但大多数框架都包含返回字符串长度的方法,您应该使用该方法而不是正则表达式来实现此目的。匹配单个字符的方法是(使用Perl正则表达式): \A表示“字符串的开始”;表示“任何字符”;\z表示“字符串的结束”。如果没有\A和\z,您将匹配任何长度超过一个字符的字符串 编辑:但实际上,您应该执行以下操作: if( length($string) == 1 ) { ... } (以Perl为例) Ed

如何使用regex测试查看字符串的长度

例如,如果一个字符串只包含1个字符,如何匹配它

^.$

但大多数框架都包含返回字符串长度的方法,您应该使用该方法而不是正则表达式来实现此目的。

匹配单个字符的方法是(使用Perl正则表达式):

\A
表示“字符串的开始”;
表示“任何字符”;
\z
表示“字符串的结束”。如果没有
\A
\z
,您将匹配任何长度超过一个字符的字符串

编辑:但实际上,您应该执行以下操作:

if( length($string) == 1 ) {
  ...
}
(以Perl为例)


Edit2:以前我有
/^.$/
但是,正如赛斯指出的,这允许在最后一个字符为
\n的两个字符长的字符串上进行匹配。
\A..\z
构造修复了该问题。

锚定到字符串的开头和结尾,并匹配一个字符。以多种语言:

^.{1}$
在Ruby的正则表达式中:

\A.{1}\z

以上要求与perl兼容的regexp。诀窍是/^.$/可能与“x”和“x\n”匹配。添加/s修饰符没有帮助。

什么语言?为什么不能使用适当的函数,如
length()
strlen()
/^.$/
,但我不相信您使用的任何语言都没有更好的方法。
{1}
实际上是无关的,只是增加了行噪波。$还可以匹配新行,因此re将匹配“x”和“x\n”@Seth在换行符后,
$
与什么正则表达式风格匹配?OP没有提到申请。例如,在JavaScript中,
/foo$/.test(“foo\n”)
返回
false
@Phrogz:No,关键是它在换行符和行尾之前匹配。至于正则表达式的风格,SystemV、POSIX、Perl、Ruby、PHP和Python是我所知道的。事实上,我不知道有哪种方法不起作用。直到我看到你的javascript示例,{1}没有添加任何内容。后者是正确的,而前者将匹配“x”和“x\n”。你还需要确保这一点。可以匹配\n,如果没有/s修饰符(/m在Ruby中)@Seth
{1}
不会在OP提到的“example”案例中添加任何内容,但是OP询问如何测试一般长度。我添加了{1}(和其他人一样),以明确如何匹配不同数量的字符。此外,
$
是否在“\n”之后匹配取决于正则表达式的风格。由于OP尚未指定味道,您的语句不是绝对正确的。列出的正则表达式将匹配“x”和“x\n”,除了。通常表示“除\n以外的任何字符”,除非使用/s修饰符(/m在Ruby中),否则“\n”将不匹配。
\A.{1}\z
/^.\z/s