我在我的应用的更改密码功能中使用正则表达式模式。密码的要求是:
我想在我的模式中添加这些字符,但我似乎无法添加" \"以及单引号和双引号。我怎么逃避他们?我使用Eclipse(Java),因此转义需要2个反斜杠
现在,我的模式看起来像这样,它给了我一个错误:
String customPattern = "((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])
(?=.*[!@#$%^&*()\\-_+=/?.,>~\\\\|\\[];:\\"'{}])(?=[\\S]+$).{8,})";
答案 0 :(得分:2)
在双引号前放一个反斜杠,并在char类中转义]
。
String customPattern = "^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()\\-_+=/?.,>~\\\\|\\[\\];:\"'{}])(?=\\S+$).{8,}";
答案 1 :(得分:1)
您没有逃脱角色类]
内的[!@#$%^&*()\\-_+=/?.,>~\\\\|\\[];:\\"'{}]
(\\[
之后)。这是一个正常工作的正则表达式(使用^
/ $
锚点,如果不与matches()
一起使用,它将真正强制执行整个字符串的长度检查:
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()\-_+=\/?.,>~\\|\[\];:"'{}])(?=\S+$).{8,}$
^^
请参阅demo
在Java中,您可以将其用作
String customPattern = "^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()\\-_+=/?.,>~\\\\|\\[\\];:\"'{}])(?=\\S+$).{8,}$";