在我的代码中,我用正则表达式模式验证手机号码。如果我在我的代码中硬编码正则表达式模式,它匹配并按预期工作。但是如果我从属性文件中获取模式它不匹配.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>
任何帮助将不胜感激!!!!
答案 0 :(得分:1)
删除了文件中的反斜杠。现在它按预期工作。谢谢@shmosel。