我需要提出一个正则表达式来验证具有以下要求的字符串:
我一直在接近,但在其中一个条件下失败了。
谢谢!
答案 0 :(得分:2)
您正在寻找的正则表达式是:
/^(?=.*[!@#$%^&*])[A-Za-z0-9!@#$%^&*]+$/
这将保证字符串包含一个使用(?=)正向前瞻的特殊字符。
- 编辑 -
看来Bohemian决定完全忽略我的回答的评论部分并编辑上面的例子来删除它的“不必要的”字符转义。我真的希望他没有,因为我相信我的理由是正确的,但你有它。我最初的例子是:
/^(?=.*[\!\@\#\$\%\^\&\*])[A-Za-z0-9\!\@\#\$\%\^\&\*]+$/
答案 1 :(得分:1)
^(?=.*?[!@#$%\^&*])((?!_)[\w!@#$%\^&*])+$
它确保在字符串中的任何位置找到特殊字符。一旦找到它,它就匹配字符串的其余部分,只要字符串只包含单词字符,数字和特殊字符。
编辑:negativelookahead阻止_(下划线)。
答案 2 :(得分:0)
假设您希望“至少一个非字母数字字符,至少8个字符”的最低要求。使用两个前瞻:
^(?=.*[^a-zA-Z0-9])(?=.{8,}$)
除此之外 - 让用户选择他们喜欢的密码。
答案 3 :(得分:0)
这个似乎正在起作用:
^.*(?=.*[a-zA-Z])(?=.*[!@#$%^&*]).*$
如果您还想设置最小长度,请使用此选项(最少使用10个字符):
^.*(?=.{10,})(?=.*[a-zA-Z])(?=.*[!@#$%^&*]).*$
请参阅rubular