如果从属性文件加载模式,则RegEx Pattern不匹配

时间:2017-06-02 04:37:25

标签: java regex

在我的代码中,我用正则表达式模式验证手机号码。如果我在我的代码中硬编码正则表达式模式,它匹配并按预期工作。但是如果我从属性文件中获取模式它不匹配.Below是我的代码

public class RegularExpTest {
    public static final Hashtable<String, String> configDetails = new Hashtable<String, String>();
    public static void main(String[] args) {
        try {

            String str = "+917777777777";

            Properties properties = new Properties();
            InputStream input = new FileInputStream(new File(System
                    .getProperty("conf.path")
                    + "/webconfiguration.xml"));
            properties.loadFromXML(input);
            if (properties != null) {
                Enumeration<Object> keyString = properties.keys();
                String key = "";
                while (keyString.hasMoreElements()) {
                    key = keyString.nextElement().toString();

                    configDetails.put(key, properties.getProperty(key));
                }
            }
            String mobPattern = configDetails.get("MOB.PATTERN");
            Pattern mobilePattern = Pattern.compile(mobPattern);
            if(mobilePattern.matcher(str).matches()) {
                System.out.println("true");
            } else {
                System.out.println("false");
            }
        } catch(Exception e) {
            e.printStackTrace();
        }

    }
}

输出

True if I hard code the pattern in code
False if I fetch the pattern from property file

以下是我的正则表达式

^(\\+91)?[789]\\d{9}$

为什么它不起作用如果我从属性文件中获取模式。 webconfiguration.xml

<entry key="MOB.PATTERN">^(\\+91)?[789]\\d{9}$</entry>

任何帮助将不胜感激!!!!

1 个答案:

答案 0 :(得分:1)

删除了文件中的反斜杠。现在它按预期工作。谢谢@shmosel。