如果它包含A-Z0-9,并且A-Z0-9在任何地方都有空格,在任何地方括号或在任何地方连字符,我试图让我的正则表达式评估为真。
到目前为止,我已经得到了这个匹配A-Z0-9()“”和连字符,但我想使括号/空格/连字符可选。如果没有大量的if语句,我怎么能这样做呢?
到目前为止:
if(str.matches("^[A-Z0-9 ()-?]+$"){
return str;
}
如何使这些括号/连字符/空格可选?感谢。
答案 0 :(得分:0)
如果需要匹配A-Z0-9
并将其作为可选项,那么在Java中您只需要:
if (str.matches("(?=.*?[A-Z0-9])[A-Z0-9 ()-]+") {
return str;
}
(?=.*?[A-Z0-9])
是确保[A-Z0-9]
课程中至少有一个角色的先行者。?
?
字面意思是字符类。matches
在尝试将完整输入与给定的正则表达式匹配时,不需要锚点。答案 1 :(得分:0)
如果我的问题是正确的,A-Z0-9
是强制性的,可选( )-
- 对吧?
然后您需要确保至少匹配一次A-Z0-9
:
^[A-Z0-9 ()-]*[A-Z0-9]+[A-Z0-9 ()-]*$
这将匹配
A
AB9D
A(9-
-BC)
-8-D
但不是
(-
---
)))
-
Debuggex:
^[A-Z0-9 ()-]*[A-Z0-9]+[A-Z0-9 ()-]*$