Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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 - Fatal编程技术网

Php 正则表达式除空格外的任何字符

Php 正则表达式除空格外的任何字符,php,regex,whitespace,Php,Regex,Whitespace,我正在创建一个密码验证器,它接受除空格以外的任何字符,并且至少包含6个字符 ^[^\s]{6}[^\s]*$ 在搜索了我找到的最佳答案后,下面是一个示例: 它不允许中间有任何空格,但允许以空格开头和结尾。我不允许传递的字符串中有任何空格 我试过这个,但不起作用: if (preg_match("/^[^\s]+[\S+][^\s]{6}$/", $string)) { return true; } else { return false; } 谢谢。\S-匹配任何非空白字符。相当于

我正在创建一个密码验证器,它接受除空格以外的任何字符,并且至少包含6个字符

^[^\s]{6}[^\s]*$
在搜索了我找到的最佳答案后,下面是一个示例:

它不允许中间有任何空格,但允许以空格开头和结尾。我不允许传递的字符串中有任何空格

我试过这个,但不起作用:

if (preg_match("/^[^\s]+[\S+][^\s]{6}$/", $string)) {
  return true;
} else {
  return false;
}

谢谢。

\S
-匹配任何非空白字符。相当于Unicode字符类别
[^\f\n\r\t\v\x85\p{Z}]
。如果使用ECMAScript选项指定ECMAScript兼容行为,
\S
相当于
[^\f\n\r\t\v]

可以执行的字符串开头:
^[\t]+
,结尾:
[\t]+$
(制表符和空格)

预计到达时间:


顺便说一句,您使用regex
[\S+]
,我认为您正在寻找:
[\S]+

我认为您可以使用以下命令,它将匹配任何长度超过1个字符且没有空格的字符串:

^[^\s]+$

你可以在这里看到测试:。

试试这个。这将至少匹配6个非空白字符,后跟任意数量的其他非空白字符

^[^\s]{6}[^\s]*$

最简单的表达是:

^\S{6,}$
^
表示字符串的开头
\S
匹配任何非空白字符
{6,}
表示6个或更多
$
表示字符串的结尾

在PHP中,这看起来像

preg_match('/^\S{6,}$/', $string)
编辑:

>> preg_match('/^\S{6,}$/', "abcdef\n")
1
>> preg_match('/^\S{6,}\z/', "abcdef\n")
0
>> preg_match('/^\S{6,}$/D', "abcdef\n")
0
Qtax
是正确的。好球!虽然如果您从HTML中获取输入,可能不会有任何换行符。

类似的内容:

/^\S{6,}\z/
可以这样引用:

preg_match('/^\S{6,}\z/', $string)
所有使用
$
的答案都是错误的(至少没有任何特殊标志)。如果不希望在字符串末尾允许换行,则应使用
\z
而不是
$

  • $
    匹配字符串结尾或字符串结尾的换行符之前的
    $
    (如果未使用修饰符)
  • \z
    匹配字符串结尾(独立于多行模式)
发件人:


愚蠢的问题:为什么要阻止用户在密码中使用空格?