我在正则表达式中有一个小问题,我想检查我的字符串是否在2008-13的范围内。这就是我不会把正则表达式
Array[k].startsWith("")到目前为止我已经尝试过了:
(200+[8-9])|(201+[0-9])和
^20+[0-1][0-9]$但第二个我认为它会给我2000-2019年。
如果有任何帮助,我将不胜感激。
发布于 2013-02-06 17:23:35
您的错误在于使用+。如下所示修复您的正则表达式:
(200[8-9])|(201[0-9])
但最好提取年份,解析它,并将其验证为整数:
Pattern p = Pattern.compile("(\\d{4})");
Matcher m = p.matcher(str);
if (m.find()) {
int year = Integer.parseInt(m.group(1));
if (year > 2008 && year < 2019) {
// do something
}
}这对于将来的修改更加健壮:可以从文件、数据库等中读取年份的顶值和底值。
发布于 2013-02-06 17:23:26
尝试下面的逻辑..
public class Lottery{
// Do not change main().
public static void main(String [] args) throws Exception{
String[] myArray ={"2008","2009"};
for (String val : myArray) {
int year = Integer.parseInt(val);
if(year<=2013 && year>=2008)
{
// To do
}
}
}
}发布于 2013-02-06 17:20:00
正则表达式为:
^200[89]|201[0-3]$但是,除非您被迫使用单个正则表达式进行验证,否则我会简单地将其解析为整数,然后使用if语句检查范围。
您不希望这些+字符出现在其中,因为它们表示前面的一个或多个对象。因此,20+[89]将允许200000000000000009。
https://stackoverflow.com/questions/14725339
复制相似问题