我正在尝试创建一个将执行以下操作的正则表达式
匹配字符串if:
$
作为String $
[$]
我目前有以下正则表达式:[^\$]{3,34}\$$
您可以看到示例here
除了最后,这不会允许$
,但如果它被括在[$]
括号中,我仍然需要允许美元符号。如何添加“允许”[$]
的方法?
一些正面示例:
一些否定示例:
答案 0 :(得分:3)
您可以使用
^(?=.{4,35}$)(?:\[\$]|[^$])*\$$
请参阅regex demo
<强>详情:
^
- 字符串的开头(如果模式与matches()
一起使用,则可省略)(?=.{4,35}$)
- 字符串中需要4到35个字符的正向前瞻(?:\[\$]|[^$])*
- 0 + [$]
个子字符串或$
以外的任何字符\$
- 文字$
$
- 字符串结尾(如果与matches()
一起使用,则可以省略)。String lines[] = {"ABCD$","ABC[$]D$","[$]ABCDEFG$","!@#%^&*[$]^%$","AB$CD","ABCD","$$ABCD$","AB$[$]CD$"};
String pat = "(?=.{4,35}$)(?:\\[\\$]|[^$])*\\$";
for(String line : lines)
{
System.out.println(line + ": " + line.matches(pat));
}
结果:
ABCD$: true
ABC[$]D$: true
[$]ABCDEFG$: true
!@#%^&*[$]^%$: true
AB$CD: false
ABCD: false
$$ABCD$: false
AB$[$]CD$: false