Html 正则表达式:8-20个字符,但不允许使用空格

Html 正则表达式:8-20个字符,但不允许使用空格,html,regex,Html,Regex,我正在尝试为密码字段创建正则表达式 要求是8-20个字符,但不允许有空格 我尝试了^[^-\s].{8,20}$但没有效果…删除点 ^[^-\s]{8,20}$基于您上面的评论,它应该是字母数字,带有一些特殊字符,您最好允许使用字符,而不是不允许使用字符 ^[a-zA-Z0-9\*\!\\?\(\)]{8,20}$ 另一方面,如果它是密码,您可能应该允许整个UTF-8字符集(包括空格),并且允许超过20个字符。除了空格之外还有其他字符吗?i、 允许使用UTF-8字符?不,不允许任何字符。。。字

我正在尝试为密码字段创建正则表达式

要求是8-20个字符,但不允许有空格

我尝试了
^[^-\s].{8,20}$
但没有效果…

删除点


^[^-\s]{8,20}$

基于您上面的评论,它应该是字母数字,带有一些特殊字符,您最好允许使用字符,而不是不允许使用字符

^[a-zA-Z0-9\*\!\\?\(\)]{8,20}$

另一方面,如果它是密码,您可能应该允许整个UTF-8字符集(包括空格),并且允许超过20个字符。

除了空格之外还有其他字符吗?i、 允许使用UTF-8字符?不,不允许任何字符。。。字母数字和典型的特殊字符。你怎么定义“典型的特殊字符?”我仍然可以在字符串的末尾添加一个空格。。。我只是不想留任何空间。我不能复制这个。它不允许在我测试的末尾使用空格:我可以在输入的开头和结尾添加空格。锚定(^在开头,$在结尾)阻止了这一点。如果它允许在开始和结束处使用空格,则它位于代码中的其他位置。你能在问题中说明你是如何验证输入的吗?听起来好像有人在
$。修剪
输入我希望它允许!至少结尾没有空格。所以最后一个字符可以是空格,但不能是密码的其余部分?不,根本没有空格。我仍然可以使用正则表达式在输入的开头或结尾添加空格。不可能。
^
表示“字符串的开头”。
[
..
]
括号内的所有内容都表示允许这些字符中的任何一个(括号内没有空格)。
{
..
}
括号表示允许0到20次。
$
表示“这是字符串的结尾”。那里没有一个地方留有空间。如果您的代码显示有空格,则说明您的代码有问题。您是否正在从浏览器进行测试?可能您的浏览器(或者您正在使用的框架)正在修剪该值以删除开头或结尾处的任何空格。检查实际传递给正则表达式的值。更好的是,用PHPUnit测试你的正则表达式,这样你就知道它在做你期望的事情。你不想弄乱密码。