11

文字列がパターンと一致することを確認しようとしています。つまり、文字列全体をそのパターンとして記述できます。ただし、部分文字列がそのパターンに一致する場合は をpreg_match返します。true(たとえば、 をpreg_match("#[a-z]*#, "333k")返しますが1、これは望んでいません。この例では、文字列全体に小さなラテン文字のみが含まれていることを確認したいと思います。)

4

3 に答える 3

20

開始マーカーと終了マーカー^をそれぞれ使用$して、正規表現パターンの文字列の開始と終了を示します。そうすれば、どのような種類の部分文字列でもなく、文字列全体のみに式を一致させることができます。あなたの場合、次のようになります。

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

これらのマーカーの 1 つを使用して、パターンが文字列の先頭または末尾のみに一致する必要があることを指定することもできます。

于 2013-05-04T15:24:46.697 に答える
1

私は正規表現が大好きですが、このタスクではありません。単一の直接的な非正規表現に相当するものがあるため、不必要なオーバーヘッドです。 https://www.php.net/manual/en/function.ctype-lower.php

コード: (デモ)

$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

ps レコードの場合、空の文字列が返されますfalse。このテスト ユニットの論理的な検証要件がよくわかりません。

于 2019-06-01T09:21:05.600 に答える