我试着定义一些正则表达式
String passwordPattern="((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})";
String imageFileExtensionPattern="([^\s]+(\.(?i)(jpg|png|gif|bmp))$)";
String HTMLtagPattern="<("[^"]*"|'[^']*'|[^'">])*>";
String ExtractHTMLlinkPattern="\s*(?i)href\s*=\s*(\"([^"]*\")|'[^']*'|([^'">\s]+))";
但是Eclipse没有编译并且说我Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )
还与官方W3C电子邮件正则表达式(RFC2822)获得相同的错误
String emailPattern="(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|”(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*”)@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])";
答案 0 :(得分:5)
因为Java将\
视为字符串文字中的转义字符,所以您需要在模式中转义它们,因此它们将被解释为正则表达式的一部分(而不是正常的转义字符):< / p>
String passwordPattern="((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})";
String imageFileExtensionPattern="([^\\s]+(\\.(?i)(jpg|png|gif|bmp))$)";
String HTMLtagPattern="<(\"[^\"]*\"|'[^']*'|[^'\">])*>";
String ExtractHTMLlinkPattern="\\s*(?i)href\\s*=\\s*(\"([^\"]*\")|'[^']*'|([^'\">\\s]+))";
答案 1 :(得分:2)
你需要转义反斜杠:即写\\
而不是\
。
\
在字符串文字中用于特殊字符:例如\t
是一个标签。因此,如果您需要实际的反斜杠,则需要编写\\
答案 2 :(得分:0)
如果Java使用C ++样式字符串引用,则需要对双引号和转义进行转义(或三字符,这可能是MS特定的)。
如果是这样,这些应该是新的字符串。其中一个正则表达已经“逃脱了。”
最后一个正则表达式有一些”
引号。
我使用 RegexFormat 对每个进行格式化检查,然后将它们打包成C风格的字符串。
passwordPattern="((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})";
imageFileExtensionPattern="([^\\s]+(\\.(?i)(jpg|png|gif|bmp))$)"
HTMLtagPattern="<(\"[^\"]*\"|'[^']*'|[^'\">])*>";
ExtractHTMLlinkPattern="\\s*(?i)href\\s*=\\s*(\"([^\"]*\")|'[^']*'|([^'\">\\s]+))";
emailPattern="(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|”(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*”)@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])";
(?:
[a-z0-9!#$%&'*+/=?^_`{|}~-]+
(?: \. [a-z0-9!#$%&'*+/=?^_`{|}~-]+ )*
| ”
(?:
[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]
| \\ [\x01-\x09\x0b\x0c\x0e-\x7f]
)*
”
)
@
(?:
(?:
[a-z0-9]
(?: [a-z0-9-]* [a-z0-9] )?
\.
)+
[a-z0-9]
(?: [a-z0-9-]* [a-z0-9] )?
| \[
(?:
(?:
25 [0-5]
| 2 [0-4] [0-9]
| [01]? [0-9] [0-9]?
)
\.
){3}
(?:
25 [0-5]
| 2 [0-4] [0-9]
| [01]? [0-9] [0-9]?
| [a-z0-9-]* [a-z0-9] :
(?:
[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]
| \\ [\x01-\x09\x0b\x0c\x0e-\x7f]
)+
)
\]
)