作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个正则表达式来测试密码。我当前的检查检查以下内容:
目前,用户无法输入特殊字符,但我正在尝试将其添加为可选检查(因此Testing1 和Testing1! 应该都匹配)。我试过:
^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])(A-Za- z\d[$@$!%*#?&]?){8,}$
但它没有捕获它。我感觉我的特殊字符集放错了地方,但我不确定该把它放在哪里。
在哪里添加特殊字符列表作为可选检查?
最佳答案
您可以通过多种方式设置正则表达式,例如为字符类型创建白名单或黑名单。这个特别为可以使用的字符创建了一个白名单,这似乎就是您正在寻找的内容。
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[A-Za-z0-9$@$!%*#?&]{8,}$
正则表达式分割:
^ // Assert position at start of the line
(?=.*[A-Z]) // First positive lookahead, makes sure a capital character exists
(?=.*[a-z]) // Make sure a lowercase character exists
(?=.*[0-9]) // Make sure a number exists
[A-Za-z0-9$@$!%*#?&] // All of the possible characters that can be typed
{8,} // 8 to infinity characters
$ // Assert position at end of line
由于您说希望特殊字符作为可选字符,因此它们只是放置在可以键入的可能字符中,但不会通过任何正向前瞻进行验证。
查看此正则表达式在 regex101 上的实际应用。请记住,在此示例中,修饰符 gm
用于跨行验证,可能应该在您的用例中删除。
当然,您可能有使用“白名单”方法的理由,但一种更常见的方法(您可能想在某个时候尝试一下)是允许几乎所有内容(黑名单),然后验证某个标准是否符合遇见了。
关于javascript - 为什么我的可选 Angular 色没有被捕获?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37884937/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!