我有一个特定模式的字符串,如下所示,我需要验证:
String a ="test/<value>"
String b = "test/test1/<value>"
String c = "test3";
String d = "test4"
其中value - 可以是任何东西,即字母、数字、符号、spl 字符。
字符串 c 和字符串 d 非常简单。问题出现在字符串 a、b 上。
有效字符串:
test/12 | test/abc | test/12.39 ...
test/test1/12 | test/test1/abc | test/test1/12.30
test3
test4
无效的字符串:
test1/12
test/test123/12
test,test1,test3,test4 是关键词。任何改变都应该让我返回错误。
我尝试使用以下正则表达式模式:
Pattern pattern1 = "^(test/(test1/)?[A-Za-z0-9]+|test3|test4)?/?$"
它适用于少数场景,即
test/123 (pass)
test/test1/abc123(pass)
当它有任何符号、十进制值或 spl 字符时,它会失败:
test/10.12 (Fail)
test/test1/@#$$ (Fail)
Pattern pattern2 = "^(test/(test1/)?[A-Za-z0-9/*!@#$%^&*()\"{}_|\\?/<>,.]+|test3|test4)?/?$";
当我使用上述模式时,如果关键字有任何变化,它就会失败。
test/test1344/123(Fail)
即,即使我更改它返回为 true 的关键字。预期结果为 false。
请就我如何验证上述字符串提供建议?