Php 正则表达式除空格外的任何字符
我正在创建一个密码验证器,它接受除空格以外的任何字符,并且至少包含6个字符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-匹配任何非空白字符。相当于
^[^\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
愚蠢的问题:为什么要阻止用户在密码中使用空格?