Regular Expressions: low-caps, dots, zero spaces

后端 未结 4 915
梦毁少年i
梦毁少年i 2021-01-24 13:09

how do I write an expression which checks for lowcaps, dots, and without any white space in the string?

the code below so far was trying to check for lowcaps and dots (i

相关标签:
4条回答
  • 2021-01-24 13:27
     /^[a-z0-9.]+$)/
    

    Should do it. Just think about that only small letters, dots and digits are allowed. The expression will not match if any white-space is included. Btw. you don't have to escape meta-characters in a capture group.

    ^ and $ indicates that the whole string should only contain those characters in the capture group (they mark the start and the end of the string) and the + says that at least one of these characters must occur. Depending on your needs you can change it to e.g. {3,} which means that the string must be at least 3 characters long.

    Example:

    $values=array("fooBar", "123.45", "foo bar", "foo.bar");
    
    foreach($values as $value) {
        if (!preg_match('/^[a-z0-9.]+$/', $value))
        {
             echo "Not valid: $value\n";
        }
    }
    

    prints:

    Not valid: fooBar
    Not valid: foo bar
    
    0 讨论(0)
  • 2021-01-24 13:32

    I think you want this:

    if ( preg_match( '/[^a-z0-9.]/' ) ) {
        $error = true;
    }
    

    Keep in mind, I removed the !. Now if this matches, you get the error. VolkerK reversed it but forgot to remove the !, I think.

    Also, http://regexpal.com/ is your friend.

    0 讨论(0)
  • 2021-01-24 13:42

    '/^[a-z0-9.]+$/' should be the right regex.

    0 讨论(0)
  • 2021-01-24 13:44

    [a-z0-9.] matches a lower-case letter or a digit or a dot.
    [^a-z0-9.] matches all characters that are not a lower-case letter or a digit or a dot.
    So if /[^a-z0-9.]/ matches anywhere the string contains something other than lc-letter,digit or dot. If it does not match your condition is fulfilled.

    if ( !preg_match('/[^a-z0-9.]/', $cst_value) ) {
      // only lower-case letters, digits or dots
    }
    

    or without digits

    if ( !preg_match('/[^a-z.]/', $cst_value) ) {
      // only lower-case letters or dots
    }
    

    update: example:

    foreach( array('abcdef', 'abc de', 'abc.de', 'aBcde') as $cst_value) {
      echo $cst_value, ': ';
      if ( !preg_match('/[^a-z.]/', $cst_value) ) {
        echo " ok.\n";
      }
      else {
        echo "failure\n";
      }
    }
    

    prints

    abcdef:  ok.
    abc de: failure
    abc.de:  ok.
    aBcde: failure
    
    0 讨论(0)
提交回复
热议问题