Wen*_*Wen 6 php regex whitespace
我正在创建一个密码验证器,它可以获取任何字符,但只有空格和至少6个字符.
搜索到最好的后,我想出的是这个例子: 匹配的正则表达式是什么,文本之间没有空格?
它不允许中间的任何空格,但允许以空格开始和结束.我想禁止传递的字符串中的任何空格.
我试过这个,但它不起作用:
if (preg_match("/^[^\s]+[\S+][^\s]{6}$/", $string)) {
return true;
} else {
return false;
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
最简单的表达方式:
^\S{6,}$
Run Code Online (Sandbox Code Playgroud)
^表示字符串的开头
\S匹配任何非空白字符
{6,}表示6或更多
$表示字符串的结尾
在PHP中,这看起来像
preg_match('/^\S{6,}$/', $string)
Run Code Online (Sandbox Code Playgroud)
编辑:
>> preg_match('/^\S{6,}$/', "abcdef\n")
1
>> preg_match('/^\S{6,}\z/', "abcdef\n")
0
>> preg_match('/^\S{6,}$/D', "abcdef\n")
0
Run Code Online (Sandbox Code Playgroud)
Qtax是正确的.好决定!虽然如果你从HTML中获取输入,<input type="text">你可能不会有任何换行符.
像这样的东西:
/^\S{6,}\z/
Run Code Online (Sandbox Code Playgroud)
可以引用如:
preg_match('/^\S{6,}\z/', $string)
Run Code Online (Sandbox Code Playgroud)
使用的所有答案$都是错误的(至少没有任何特殊标志).如果您不想在字符串末尾允许换行,则应使用\z而不是$.
$匹配字符串的结尾或字符串结尾处的换行符之前(如果没有使用修饰符)\z 匹配字符串的结尾(独立于多行模式)来自http://www.pcre.org/pcre.txt:
^ start of subject
also after internal newline in multiline mode
\A start of subject
$ end of subject
also before newline at end of subject
also before internal newline in multiline mode
\Z end of subject
also before newline at end of subject
\z end of subject
Run Code Online (Sandbox Code Playgroud)