用于测试字符串是否以数字结尾的正则表达式
我想测试字符串是否以数字结尾。我希望下面的 Java 行打印 true。为什么它打印错误?
System.out.println("I end with a number 4".matches("\\d$"));
我想测试字符串是否以数字结尾。我希望下面的 Java 行打印 true。为什么它打印错误?
System.out.println("I end with a number 4".matches("\\d$"));
您的正则表达式不会匹配整个字符串,而只会匹配最后一部分。尝试下面的代码,它应该工作正常,因为它与整个字符串匹配。
System.out.println("I end with a number 4".matches("^.+?\\d$"));
您可以对此进行测试,以便快速检查在线正则表达式测试器,例如:http://www.regexplanet.com/simple/index.html。这还为您提供了在结果中的 Java 代码中使用的内容,并带有适当的转义。
.+ 将确保数字前至少存在一个字符。? 将确保它执行惰性匹配,而不是贪婪匹配。
在Java Regex中,Matcher.find()
(在字符串中的任何位置查找匹配项)和 Matcher.matches()
(匹配整个字符串)之间存在差异。
String 只有一个方法(实现等效于此代码:),因此您需要创建一个与完整 String 匹配的模式:matches()
Pattern.compile(pattern).matcher(this).matches();
System.out.println("I end with a number 4".matches("^.*\\d$"));