Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.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
Php 如何验证字符串只包含小写字母?_Php_Regex_String_Validation_Preg Match - Fatal编程技术网

Php 如何验证字符串只包含小写字母?

Php 如何验证字符串只包含小写字母?,php,regex,string,validation,preg-match,Php,Regex,String,Validation,Preg Match,我正在尝试验证我的字符串是否与模式匹配。也就是说,完整的字符串可以写成该模式。 但是,preg_match返回true,如果任何子字符串与该模式匹配。 (例如,preg_match(“#[a-z]*#,“333k”)返回1,我不想这样做。 在本例中,我想验证一下,整个字符串只包含小的拉丁字母。)您可以分别使用开始和结束标记,^和$来指示正则表达式模式中字符串的开始和结束。这样,您可以使表达式只匹配整个字符串,而不匹配任何类型的子字符串。在您的情况下,它将如下所示: preg_match("#^[

我正在尝试验证我的字符串是否与模式匹配。也就是说,完整的字符串可以写成该模式。 但是,
preg_match
返回
true
,如果任何子字符串与该模式匹配。 (例如,
preg_match(“#[a-z]*#,“333k”)
返回
1
,我不想这样做。 在本例中,我想验证一下,整个字符串只包含小的拉丁字母。)

您可以分别使用开始和结束标记,
^
$
来指示正则表达式模式中字符串的开始和结束。这样,您可以使表达式只匹配整个字符串,而不匹配任何类型的子字符串。在您的情况下,它将如下所示:

preg_match("#^[a-z]*$#", "333k");

您还可以使用其中一个标记指定模式必须仅匹配字符串的开头或结尾。

请注意,
$
锚点在字符串最末端的换行字符序列之前也匹配(是的,即使未指定
m
多行标记)。请参阅:

/^\d+$/D
您可以使用
D
修饰符“修复”此
$
行为。PCRE-compliant
PCRE\u-DOLLAR\u-ENDONLY
修饰符使
$
锚定在字符串的最末端匹配(不包括字符串中最后换行之前的位置)

等于

/^\d+\z/
和匹配由1个或多个数字组成的整个字符串,该字符串不匹配
“123\n”
,但将匹配
“123”

或者,在字符串“强”>非常/强>字符串的开始和结束时,也可以考虑使用<强> <代码> \“< /代码> < /强>和<强> <代码> \z < /代码>锚< <强> > < /p>
preg_match('~\A[a-z]*\z~', "333k");
             ^^      ^^
PHP正则表达式中的
\A
\z
明确的字符串起始和结束锚(因为它们的行为不依赖于任何正则表达式修饰符,即使您指定了
m
多行修饰符,它们也会继续断言字符串起始/结束位置)。请参阅中有关PHP正则表达式锚的更多信息


注意
\Z
但是:
\Z
将匹配最后一个换行符之前的整个字符串,而
\Z
将只匹配字符串的最末端,即在字符串中的所有字符之后(请参阅)我非常喜欢正则表达式,但不是为了完成这项任务——这是不必要的开销,因为有一个单一的、直接的、非正则表达式等价物

代码:()

输出:

Test: false
test: true
test1: false
1test: false
test!: false
p、 对于记录,一个空字符串返回
false
。我不确定您对此测试单元的逻辑验证要求

$tests = [
    'Test',
    'test',
    'test1',
    '1test',
    'test!'
];
foreach ($tests as $test) {
    echo "$test: " , (ctype_lower($test) ? 'true' : 'false') , "\n";
}
Test: false
test: true
test1: false
1test: false
test!: false