正则表达式:低帽,点,零空格

时间:2010-08-26 21:07:50

标签: php regex whitespace preg-match

如何编写一个表达式来检查字符串中的低位,点和没有任何空格?

到目前为止,下面的代码试图检查低点和点(它无论如何都不起作用!)但我不知道如何在表达式中添加空格。

# check for matches of lowcaps or lowcaps with a dot
if (!preg_match('/([a-z0-9]|[a-z0-9\.])/', $cst_value))
{
  $error = true;
  echo ' please use lowcaps only with dot(s) and without any spacing.';
}

4 个答案:

答案 0 :(得分:3)

[a-z0-9.]匹配小写字母或数字或点 [^a-z0-9.]匹配所有不是小写字母或数字或点的字符 因此,如果/[^a-z0-9.]/匹配任何位置,则字符串包含除lc-letter,digit或dot之外的其他内容。如果不符合您的条件就满足了。

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

或没有数字

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

更新:示例:

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";
  }
}

打印

abcdef:  ok.
abc de: failure
abc.de:  ok.
aBcde: failure

答案 1 :(得分:0)

 /^[a-z0-9.]+$)/

应该这样做。想想只允许使用小写字母,点和数字。如果包含任何空格,则表达式将不匹配。顺便说一句。您不必在捕获组中转义元字符。

^$表示整个字符串应该只包含捕获组中的那些字符(它们标记字符串的开头和结尾),而+表示必须出现这些字符中的至少一个。根据您的需要,您可以将其更改为例如{3,}表示字符串长度必须至少为3个字符。

示例:

$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";
    }
}

打印:

Not valid: fooBar
Not valid: foo bar

答案 2 :(得分:0)

我想你想要这个:

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

请记住,我删除了!现在,如果匹配,则会出现错误。 VolkerK扭转了它,但我忘了忘掉了!,我想。

此外,http://regexpal.com/是您的朋友。

答案 3 :(得分:0)

'/^[a-z0-9.]+$/'应该是正确的正则表达式。

相关问题