Java Regex允许字符模式,但不允许该模式中的单个字符
我正在尝试创建一个正则表达式,它将执行以下操作 匹配字符串,如果:Java Regex允许字符模式,但不允许该模式中的单个字符,java,regex,string,Java,Regex,String,我正在尝试创建一个正则表达式,它将执行以下操作 匹配字符串,如果: 字符串介于4-35个字符之间 字符串必须包含$作为字符串中的最后一个字符 字符串不包含任何$,除非美元符号被包装在括号内,即[$] 我目前有以下正则表达式:[^\$]{3,34}\$$ 你可以看到这个例子 这捕获到除了结尾之外不允许使用$,但是如果美元符号被包装在括号内,我仍然需要允许使用美元符号[$]。如何添加“允许”[$]的方法 一些正面的例子: ABCD$ ABC[$]D$ [$]ABCDEFG$ !@#%^&*[$
- 字符串介于4-35个字符之间
- 字符串必须包含
作为字符串中的最后一个字符$
- 字符串不包含任何
,除非美元符号被包装在括号内,即$
[$]
[^\$]{3,34}\$$
你可以看到这个例子
这捕获到除了结尾之外不允许使用$
,但是如果美元符号被包装在括号内,我仍然需要允许使用美元符号[$]
。如何添加“允许”[$]
的方法
一些正面的例子:
- ABCD$
- ABC[$]D$
- [$]ABCDEFG$
- !@#%^&*[$]^%$
- AB$CD
- ABCD
- $$ABCD$
- AB$[$]CD$
^(?=.{4,35}$)(?:\[\$]|[^$])*\$$
见
详细信息:
-字符串的开头(如果该模式与^
匹配()一起使用,则可以省略)
-一个正向前瞻,要求字符串中有4到35个字符(?=.{4,35}$)
-0+(?:\[\$]\[^$])*
子字符串或除[$]
以外的任何字符$
-文字\$
$
-字符串结尾(如果与$
匹配项()一起使用,则可以省略)
ABCD$: true
ABC[$]D$: true
[$]ABCDEFG$: true
!@#%^&*[$]^%$: true
AB$CD: false
ABCD: false
$$ABCD$: false
AB$[$]CD$: false
ABCD$: true
ABC[$]D$: true
[$]ABCDEFG$: true
!@#%^&*[$]^%$: true
AB$CD: false
ABCD: false
$$ABCD$: false
AB$[$]CD$: false