我需要正则表达式匹配任何以两个修复字母开头的单词,例如 CO , CC , EX 和 FR < / strong>:
我创建了一种格式:^[C,E,F][O,C,X,R][0-9]{4}(/{1})[0-9]{1,8}
此格式^[C,E,F][O,C,X,R]
表示输入的值应以C,E或F开头,然后允许来自O,C,X和R的任何单词。
但是我有一些规则,比如
1)There must be O or C after C
2)There must be X after E
3)There must be R after F
其他组合不允许。
示例测试示例:
public class TestRegEx {
public static void main(String[] args) {
String value1="CC2007/67";
String value2="CO2001/123";
String value3="CC2001/123";
String value4="EX2001/123";
String value5="FR2001/123";
boolean value1isVerify=value5.matches("^[C,E,F][O,C,X,R][0-9]{4}(/{1})[0-9]{1,8}");
System.out.println("isVerify--->"+value1isVerify);
}
}
答案 0 :(得分:1)
看看这是否适合你
public static void main(String[] args) {
String str = "^(C[OC]|E[X]|F[R])[0-9]{4}(/{1})[0-9]{1,8}$";
System.out.println("CC2007/67".matches(str));
System.out.println("CO2001/123".matches(str));
System.out.println("CC2001/123".matches(str));
System.out.println("EX2001/123".matches(str));
System.out.println("VR2001/123".matches(str));
}
我如何应用你的规则:
^C[OC]
^E[X]
^F[R]
由于只有第一个选项有后续字符的多个选项,因此可以像下面这样重写:"^(C[OC]|EX|FR)[0-9]{4}(/{1})[0-9]{1,8}$";
但是我决定离开小组,如果你想添加其他可能的组合,那就更容易了。你可以使用任何你觉得更舒服的版本。
我没有碰到你的其他模式,因为我不知道你的确切匹配。但我相信它可以缩短为:
"^(C[OC]|EX|FR)\\d{4}/\\d{1,8}$"
答案 1 :(得分:1)
试
str.matches("(CO|CC|EX|FR)\\d{4}/\\d{1,8}")
答案 2 :(得分:1)
此格式^[C,E,F][O,C,X,R]
表示输入的值应以C,E或F开头,然后允许来自O,C,X和R的任何单词。
不,它没有,它说字符串应该以{{1}},C
,E
或F
开头,然后是,
,O
,C
,X
或R
。即字符串,
将匹配。
尝试
",,"
答案 3 :(得分:0)
您不必使用可以使用String.startsWith()
的正则表达式。在这种情况下,您将根据所有有效的起始字符检查字符串。