我有一个特定模式的字符串,如下所示我需要验证:
String a ="test/<value>"
String b = "test/test1/<value>"
String c = "test3";
String d = "test4"
其中值 - 可以是任何东西,即字母,数字,符号,拼写字符。
字符串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。
请告知我如何验证上述字符串?
答案 0 :(得分:1)
您可以使用此正则表达式:
^(?:test/(?:test1/)?[^/]+|test3|test4)/?$
我刚刚将[A-Za-z0-9]
替换为[^/]
(任何非正斜杠字符)
答案 1 :(得分:0)
尝试^(test3|test4|test(/test1)?/([0-9.]+|[A-Za-z]+))$/
。