Regex 如何否定反向引用正则表达式
我正在生成一个正则表达式,以验证密码,并满足以下条件:Regex 如何否定反向引用正则表达式,regex,backreference,Regex,Backreference,我正在生成一个正则表达式,以验证密码,并满足以下条件: Have at least 6 characters. Only have alphanumeric characters. Don't have the same initial and ending character. 我想让第一个和最后一个字符匹配,然后我会否定反向引用。我的问题在于如何否定这种反向引用。我在网上找了些东西,但什么都没找到。以下是我目前得到的信息: ([\w])[\w]{3}[\w]+\1 //Generates
Have at least 6 characters.
Only have alphanumeric characters.
Don't have the same initial and ending character.
我想让第一个和最后一个字符匹配,然后我会否定反向引用。我的问题在于如何否定这种反向引用。我在网上找了些东西,但什么都没找到。以下是我目前得到的信息:
([\w])[\w]{3}[\w]+\1 //Generates a password with at least 6 chars in which the first and final characters match
使用此模式
^(?=[0-9-a-zA-Z]+$)(.).{4,}(?!\1).
您可以使用此正则表达式:
^([0-9a-zA-Z])(?!.*\1$)[0-9a-zA-Z]{5,}$
将确保第一个字符和最后一个字符不相同(?!.*\1$)
将确保长度至少为6,并且输入中只有字母数字字符[0-9a-zA-Z]{5,}
{3}
应该是{3,}
或者甚至是{4,}
(你可以删除最后的[\w]
。此外,你不需要将\w
放在方括号内,它将允许非字母数字(在本例中,下划线.
)。它确实有效,但我不知道为什么会这样做!(*\1$)使初始字符和最终字符不同。这是一个负前瞻-它确保最后一个字符与第一个组中捕获的字符不同。(?!*\1$)
是一个负前瞻,意味着如果最后一个字符与第一个字符相同,则匹配失败。好吧,这几乎是一个模板,如(?)*