`preg_match` the Whole String in PHP

前端 未结 3 542
北海茫月
北海茫月 2021-01-26 04:43

This thing really confuses me, pardon my ignorance.

I have a var $name in here that I want to be free from number, I don\'t want any digit to be included in

相关标签:
3条回答
  • 2021-01-26 05:04

    #3 matches because you have both letters and numbers. Your regex in English basically says

    it matches if there is a non-digit character

    If you want to match only non-digit characters, you have to have the regex match against the entire string and allow for an arbitrary number of characters:

    ^[^\d]+$
    
    0 讨论(0)
  • 2021-01-26 05:15

    Try this:

    <?php
        $string = "as232dda";
        $new_string = trim(str_replace(range(0,9),'',$string));
        echo $new_string;// gives 'asdda'
    ?>
    

    Or function form:

    <?php
      function remove_numbers($string){
        return(trim(str_replace(range(0,9),'',$string)));
      }
    
      $string = "as232dda";
      echo remove_numbers($string); // gives 'asdda'
    ?>
    
    0 讨论(0)
  • 2021-01-26 05:24

    Your regex only checks that there is at least one non-digit. Instead, you need to check that it is only non-digits:

    var_dump(preg_match('/^\D+$/',$name));
    

    (^ and $ are the beginning and end of the string. \D means anything not a digit--the opposite of \d. So this only matches non-digits from beginning to end. It doesn't match an empty string. Replace + with * if you want to match an empty string as well).

    0 讨论(0)
提交回复
热议问题