我的Java程序中有这个正则表达式
if(Function.match(strAddress, "[~|+_=!$%^*@`(){}:;\"'<>?,]++"))
--do something
我想在正则表达式中加入[和]。我尝试使用转义字符,但没有去。如何将这些字符添加到我的正则表达式?
使用此示例
public class test {
public static void main(String[] args) {
String text = "asda[]";
System.out.println("Test: "+ text.matches("[~|+_=!$%^*@`(){}:;\"'<>?,\\[\\]]++"));
}
}
我试过\ [和[,它不能正常工作
上一次运行上面的代码给出了输出Test: false
答案 0 :(得分:2)
尝试使用:
"[~|+_=!$%^*@`(){}:;\"'<>?,\\[\\]]++"
//-------------------------^^-^^
你必须用\\
修改强>
当然它只匹配这组字符
~|+_=!$%^*@`(){}:;\"'<>?,[]
但在您的示例中,您使用的是字母,因此您必须包含a-z
表示较低字符,A-Z
表示匹配较高字符:
[a-z~|+_=!$%^*@`(){}:;\"'<>?,\\[\\]]++
^^^-------------------------------
现在举个例子:
String text = "asda[]";
System.out.println("Test: " + text.matches("[a-z~|+_=!$%^*@`(){}:;\"'<>?,\\[\\]]++"));
它返回:
Test: true
修改强>
您可以使用此解决方案:
[a-z]*[~|+_=!$%^*@`(){}:;\"'<>?,\[\]]++
会给你:
abc[] -> true
[] -> true
abc -> false
[]abc -> false