我在java中做了以下正则表达式:
(^(?!\\s+$).*[^\\/:*?\"<>|]+(\\.(?i)(txt|rtf|doc|docx|htm|html|pdf))$)
字符串但是我需要在xml模式中使用它,所以我已经更改为:
(^(?!\s+$).*[^\/:*?\"<>|]+(\.(?i)(txt|rtf|doc|docx|htm|html|pdf))$)
型但它的版本是接受文件与未列出的扩展名。怎么了?
jq6vz3qz1#
你的正则表达式不应该匹配任何东西:首先,“^”和“$”不是XSD正则表达式方言中的元字符,它们匹配文字“^”和“$”字符。这里还有许多XSD正则表达式不允许的其他构造。但是,您可能正在使用一个模式处理器,比如Microsoft的模式处理器,它可以自己处理自己的事情,而不是遵循W3C规范。如果您描述您的需求,而不是要求我们通过逆向工程复杂的正则表达式来解决它,对我们来说会更容易。不要忘记您可以指定多个模式。如果只想要求指定的扩展之一,只需使用第一个月
vsnjm48y2#
仅针对.xml文件扩展名匹配,我将正则表达式作为字符串参数发送,如下所示,
String xmlRegex=new String(".*\\.(xml)");
字符串并如下进行验证,
boolean matched = MatcherUtil.match( xmlRegex, filename );
型如果匹配,则返回true,否则返回false。
2条答案
按热度按时间jq6vz3qz1#
你的正则表达式不应该匹配任何东西:首先,“^”和“$”不是XSD正则表达式方言中的元字符,它们匹配文字“^”和“$”字符。这里还有许多XSD正则表达式不允许的其他构造。但是,您可能正在使用一个模式处理器,比如Microsoft的模式处理器,它可以自己处理自己的事情,而不是遵循W3C规范。
如果您描述您的需求,而不是要求我们通过逆向工程复杂的正则表达式来解决它,对我们来说会更容易。不要忘记您可以指定多个模式。如果只想要求指定的扩展之一,只需使用
第一个月
vsnjm48y2#
仅针对.xml文件扩展名匹配,我将正则表达式作为字符串参数发送,如下所示,
字符串
并如下进行验证,
型
如果匹配,则返回true,否则返回false。