sta*_*s89 3 java regex drive-letter
我不能让这个简单的正则表达式工作.我需要检查文件路径是否包含驱动器号,如果它没有抛出异常.
if (!arcvalFileFormBean.getTxtFileReview().matches("^([A-Z]):")) {
status = "MAPPING ERROR: Please submit a file from a mapped drive (i.e. K:\\).";
request.setAttribute(FairValConstants.status, status);
throw new InvalidFileMoveException(FairValConstants.MAKE_VALID_SELECTION);
}
Run Code Online (Sandbox Code Playgroud)
当我用这个测试代码时,W:\testFolder\testfile_v1234_12_23_2014_1245.pfd它失败了,什么时候应该通过.当我在没有驱动器号的情况下测试它,但是它的完整路径失败了.我的正则表达式有问题.我尝试了一些不同的正则表达式但没有任何效果.
谢谢你的时间.
问题是matches("^([A-Z]):"))因为String#matches匹配的完整输入不仅仅是它的一部分.
尝试这样做,使其匹配整行:
if (!arcvalFileFormBean.getTxtFileReview().matches("((?i)(?s)[A-Z]):.*")) {
Run Code Online (Sandbox Code Playgroud)
PS: ^和$锚也不是必需的,String#matches因为这是隐含的.
(?i) =>忽略大小写(?s) => DOTALL(mase DOT也匹配新行)matches()测试整个字符串是否与正则表达式匹配.所以A:会匹配,但不会A:\blabla(也a:没有).
正则表达式应该是这样的
^([A-Za-z]):.*$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1947 次 |
| 最近记录: |