我正在寻找正则表达式来检查java中的所有转义序列
\b backspace
\t horizontal tab
\n linefeed
\f form feed
\r carriage return
\" double quote
\' single quote
\\ backslash
如何编写正则表达式并执行验证以允许包含有效转义序列的单词/ textarea / strings / sentence
答案 0 :(得分:1)
此正则表达式将匹配您编写的所有转义序列:
\\[btnfr"'\\]
在Java中,您需要复制反斜杠,代码将显示为:
Pattern p = Pattern.compile("\\\\[btnfr\\\"\\'\\\\]");
if(p.matcher("\\b backspace").find()){
System.out.println("Contains escape sequence");
}
答案 1 :(得分:0)
您需要使用DOTALL来匹配行终止符。您可能还会发现\s
方便,因为它代表所有空格。例如
Pattern p = Pattern.compile("([\\s\"'\\]+)", Pattern.DOTALL);
Matcher m = p.matcher("foo '\r\n\t bar");
assertTrue(m.find());
assertEquals(" '\r\n\t ", m.group(1));
答案 2 :(得分:0)
以下正则表达式应满足您的需求:
Pattern pattern = Pattern.compile("\\\\[\\\\btnfr\'\"]");
,如
Pattern pattern = Pattern.compile("\\\\[\\\\btnfr\'\"]");
String[] strings = new String[]{"\\b","\\t","\\n","\\f","\\r","\\\'","\\\"", "\\\\"};
for (String s:strings) {
System.out.println(s + " - " + pattern.matcher(s).matches());
}
要匹配单个\
,您必须在正则表达式字符串中添加4 \
。
考虑到字符串,"\\"
代表单个\
。
当你有"\\"
作为正则表达式字符串时,它表示\
是正则表达式中的特殊字符,并且应该跟随某个其他字符以形成转义序列。
通过这种方式,我们需要"\\\\"
来匹配单个\
,它等同于字符串"\\"
。
编辑:没有必要转义正则表达式字符串中的单引号。因此,"\\\\[\\\\btnfr\'\"]"
可以替换为"\\\\[\\\\btnfr'\"]"
。