首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java: 2008年之后的正则表达式

Java: 2008年之后的正则表达式
EN

Stack Overflow用户
提问于 2013-02-06 17:16:29
回答 5查看 65关注 0票数 0

我在正则表达式中有一个小问题,我想检查我的字符串是否在2008-13的范围内。这就是我不会把正则表达式

代码语言:javascript
复制
Array[k].startsWith("")

到目前为止我已经尝试过了:

代码语言:javascript
复制
(200+[8-9])|(201+[0-9])

代码语言:javascript
复制
^20+[0-1][0-9]$

但第二个我认为它会给我2000-2019年。

如果有任何帮助,我将不胜感激。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-02-06 17:23:35

您的错误在于使用+。如下所示修复您的正则表达式:

(200[8-9])|(201[0-9])

但最好提取年份,解析它,并将其验证为整数:

代码语言:javascript
复制
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
    }
}

这对于将来的修改更加健壮:可以从文件、数据库等中读取年份的顶值和底值。

票数 1
EN

Stack Overflow用户

发布于 2013-02-06 17:23:26

尝试下面的逻辑..

代码语言:javascript
复制
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
           }
            }

    } 

}
票数 3
EN

Stack Overflow用户

发布于 2013-02-06 17:20:00

正则表达式为:

代码语言:javascript
复制
^200[89]|201[0-3]$

但是,除非您被迫使用单个正则表达式进行验证,否则我会简单地将其解析为整数,然后使用if语句检查范围。

您不希望这些+字符出现在其中,因为它们表示前面的一个或多个对象。因此,20+[89]将允许200000000000000009

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14725339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档