PHP - regex to allow letters and numbers only

前端 未结 5 766
谎友^
谎友^ 2020-11-27 06:21

I have tried:

preg_match(\"/^[a-zA-Z0-9]\", $value)

but im doing something wrong i guess.

相关标签:
5条回答
  • 2020-11-27 07:02

    try this way .eregi("[^A-Za-z0-9.]", $value)

    0 讨论(0)
  • 2020-11-27 07:06

    As the OP said that he wants letters and numbers ONLY (no underscore!), one more way to have this in php regex is to use posix expressions:

    /^[[:alnum:]]+$/
    

    Note: This will not work in Java, JavaScript, Python, Ruby, .NET

    0 讨论(0)
  • 2020-11-27 07:11

    You left off the / (pattern delimiter) and $ (match end string).

    preg_match("/^[a-zA-Z0-9]+$/", $value)
    
    0 讨论(0)
  • 2020-11-27 07:14

    1. Use PHP's inbuilt ctype_alnum

    You dont need to use a regex for this, PHP has an inbuilt function ctype_alnum which will do this for you, and execute faster:

    <?php
    $strings = array('AbCd1zyZ9', 'foo!#$bar');
    foreach ($strings as $testcase) {
        if (ctype_alnum($testcase)) {
            echo "The string $testcase consists of all letters or digits.\n";
        } else {
            echo "The string $testcase does not consist of all letters or digits.\n";
        }
    }
    ?>
    

    2. Alternatively, use a regex

    If you desperately want to use a regex, you have a few options.

    Firstly:

    preg_match('/^[\w]+$/', $string);
    

    \w includes more than alphanumeric (it includes underscore), but includes all of \d.

    Alternatively:

    /^[a-zA-Z\d]+$/
    

    Or even just:

    /^[^\W_]+$/
    
    0 讨论(0)
  • 2020-11-27 07:14
    • Missing end anchor $
    • Missing multiplier
    • Missing end delimiter

    So it should fail anyway, but if it may work, it matches against just one digit at the beginning of the string.

    /^[a-z0-9]+$/i
    
    0 讨论(0)
提交回复
热议问题