Java regex模式只允许在替换位置使用特殊字符
我正在尝试建立一个正则表达式,它只允许在其他位置使用特殊字符。例如,不允许使用Java regex模式只允许在替换位置使用特殊字符,java,regex,Java,Regex,我正在尝试建立一个正则表达式,它只允许在其他位置使用特殊字符。例如,不允许使用A:)B,但允许使用A:B A:B:C是允许的,但是A@B*(C)((D不是 唯一的要求是允许在替代位置使用特殊字符,即使允许使用后跟数字/字符的特殊字符 无论两个特殊字符是相同的还是不同的,都不能在一起,甚至应该允许两个连续的字母数字。这似乎适用于您的情况: [0-9A-Za-z]+([~`!@#$%^&*()_+\-=;':"][0-9A-Za-z]+)+ 我在以下方面测试了一些案例: 注:我不是\w和\
A:)B
,但允许使用A:B
A:B:C
是允许的,但是A@B*(C)((D
不是
唯一的要求是允许在替代位置使用特殊字符,即使允许使用后跟数字/字符的特殊字符
无论两个特殊字符是相同的还是不同的,都不能在一起,甚至应该允许两个连续的字母数字。这似乎适用于您的情况:
[0-9A-Za-z]+([~`!@#$%^&*()_+\-=;':"][0-9A-Za-z]+)+
我在以下方面测试了一些案例:
注:我不是\w
和\w
,因为\u
被解释为\w
的一部分。在这种情况下,我假设\u
将是一个特殊字符
希望这有帮助!您可以在此处尝试一些测试此问题需要努力才能回答。您需要定义特殊字符和“普通”字符(仅大写ASCII字母?)。是否
:A)B$
被允许?等等,匹配的规则还不清楚。除了两个不同或相同的特殊字符之外,其他所有东西都被允许,请参见。它不匹配A#B#C
,您看到的问题是什么?A#B#C这是匹配的,因为即使这两个特殊字符在一起,也不应该匹配lic static void main(字符串[]参数){String test=“A@@B”;String test1=”A@B)B“String PWD_REGEX=“[0-9A-Za-z]+([~`!@$%^&*([u+\-=;):\”][0-9A-Za-z]+“Pattern Pattern=Pattern.compile(PWD_REGEX);if(Pattern.matcher(test1.find()){System.out.println(“matches”)}”)System.out.println(“end”)}我编写了这个程序,并且syso get printed您的代码中的正则表达式有问题。在上面的代码段中,]+之间有不可打印的字符。请删除它们并从上面的答案中重新粘贴正则表达式。它可以工作!请参见此处:…删除无效行并运行它。