Regex 不';量词{0,0}是否意味着排除正则表达式中的字符?

Regex 不';量词{0,0}是否意味着排除正则表达式中的字符?,regex,Regex,我对量词的理解{}: 量词{}中的第一个整数表示至少,第二个整数表示最多。所以{n,m}意味着至少n,最多m 我不明白的是: 类似地,{0,0}表示至少为零,最多为零(等于排除某些字符)。所以正则表达式/(?=\W{0,0})/应该排除特殊字符,但它不排除为什么 因为一个空字符串满足“恰好0次[任何内容]”。。。这当然是在每个角色之前和之后,使得它对于“向前看”和“向后看”都毫无用处,但它不是这样工作的。如果要排除某些内容,可以查找[^]语法(对于匹配或负lookaheads/lookbehin

我对量词的理解
{}

量词
{}
中的第一个整数表示至少,第二个整数表示最多。所以
{n,m}
意味着至少n,最多m

我不明白的是:


类似地,
{0,0}
表示至少为零,最多为零(等于排除某些字符)。所以正则表达式
/(?=\W{0,0})/
应该排除特殊字符,但它不排除为什么

因为一个空字符串满足“恰好0次[任何内容]”。。。这当然是在每个角色之前和之后,使得它对于“向前看”和“向后看”都毫无用处,但它不是这样工作的。如果要排除某些内容,可以查找
[^]
语法(对于匹配或负lookaheads/lookbehinds中的单个字符,{0,0}的量词可以忽略指定的模式。匹配零次出现的内容并不等于排除任何内容。否决票是什么?我实际上有一个正则表达式:
/(?=^[a-zA-Z]+\d{0,})(?=\W{0,0})(?=^.{3,15}$)/
我用来验证用户名。那么我怎么不允许用户键入特殊字符呢?我实际上会尝试说出您希望允许的内容。例如,如果您只想要字母和数字:
/^[a-z0-9]{3,15}$/i
看起来它实际上可以做你在注册表中似乎需要的事情。我在发布这个问题之前已经做了,但是它允许特殊字符,这就是为什么我强制它不允许它。这个注册表
(?=^[a-zA-Z]+\d{0,})(?=^.{3,15}$)
允许使用特殊字符。Look-aheads是一项高级功能,在这种(简单的)情况下,它们只会使事情变得复杂。我提供的reg.ex.就我所能理解的而言,它满足了您的需要:您应该阅读关于regex101的解释,因为我认为reg.ex.语法对您来说不是很清楚。您更新后的链接指向一个reg.ex.语句“一个字母,一个数字,三到十五个任意类型的字符”(dot
表示任何字符)。你说我希望我的第一个字符是一个字母,它可以有零个或更多的整数…这将是
/^[a-z][0-9]*$/I
,或者
/^[a-z][a-z0-9]*$/I
,如果你想允许更多的字母