Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式:低大写、点、零空格_Php_Regex_Whitespace_Preg Match - Fatal编程技术网

Php 正则表达式:低大写、点、零空格

Php 正则表达式:低大写、点、零空格,php,regex,whitespace,preg-match,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 d

如何编写一个表达式来检查字符串中是否有大写字母、圆点和空格

到目前为止,下面的代码试图检查是否有小写字母和圆点(无论如何都不行!),但我不知道如何在表达式中添加空格

# 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.';
}

[a-z0-9.]
匹配小写字母、数字或点。
[^a-z0-9.]
匹配所有不是小写字母、数字或点的字符。
因此,如果
/[^a-z0-9.]/
匹配任何字符串包含lc字母、数字或点以外的内容。如果不符合您的条件,则满足

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

^
$
表示整个字符串应仅包含捕获组中的那些字符(它们标记字符串的开始和结束),并且
+
表示必须至少出现其中一个字符。根据需要,您可以将其更改为,例如,
{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
我想你想要这个:

if ( preg_match( '/[^a-z0-9.]/' ) ) {
    $error = true;
}
请记住,我删除了!。现在,如果匹配,您将得到错误。VolkerK倒过来,但忘了取下!,我想


还有,是你的朋友。

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

到OP,所有的答案都使用
[a-z]
。。。“触摸”。全部为“小写”,但与建议的正则表达式不匹配。给OP:应该吗?Lowcaps=小写大写?这就像“小巨人”。你不需要在字符类中逃逸
。您的角色类应该是
[a-z0-9.]
您必须从角色组中删除^!在表达式中。@Felix Kling:可能是!,但肯定不是^。增加了一个例子。@Felix是对的,你用双负数在圆圈中编码。我会选择
/^[a-z0-9.]+$/
(好的)或
/[^a-z0-9.]/
(坏的)。@Alan:好的,然后拆下!如果真的让你感到困扰,请切换if/else分支。如果你不关心任何其他的英语字母字符,所有这些都可以正常工作。如果是,则应使用\p{Ll}匹配“小写字符”。它还捕捉到挪威语中的æå等:)。这里有更多关于正则表达式和Unicode的信息:谢谢。它工作得很好,但如果我在开始时使用带有http://的URL进行测试。它将在不匹配的输出中打印此URL。为什么呢?我可以接受URL输入吗?thanks@lauthiamkok字体正如我所说,正则表达式的基本意思是:接受任何小的东西,数字或点。但是
http://
也包含
/
。您还必须将这些字符添加到character类中,但它不会验证URL是否正确。
if ( preg_match( '/[^a-z0-9.]/' ) ) {
    $error = true;
}