首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式年份范围

正则表达式年份范围
EN

Stack Overflow用户
提问于 2013-11-25 19:57:35
回答 4查看 499关注 0票数 0
代码语言:javascript
复制
import java.util.ArrayList;
import java.util.List;

public class ValidateDemo {
    public static void main(String[] args) {
        List<String> input = new ArrayList<String>();
        input.add("2005-WW-1");
        input.add("3012-W-223");
        input.add("1952-WX-431");
        input.add("19998-d-4134");
        input.add("1899-c-7465");


        for (String car : input) {
            if (car.matches("^\b(19[3-9][0-9]|200[0-9]|201[0-2])\b-?(KK|kk|ww|WW|c|C|ce|CE|cn|CN|cw|CW|d|D|dl|DL|g|G|ke|KE|ky|KY|l|L|ld|LD|lh|LH|lk|LK|lm|LM|ls|LS|mh|MH|mn|MN|mo|MO|oy|OY|so|SO|rn|RN|tn|TN|ts|TS|w|W|wd|WD|wh|WH|wx|WX)-?\\d{1,4}\\d)$")) {
                System.out.println("Car Template " + car);
            }
        }
    }
}

我试图让它匹配1980-2015年的汽车注册车牌(我知道这不是我的模式),但我一直收到“不匹配的关闭‘)”错误。

因此,例如,"2005-WW-1“应该是与该模式匹配的唯一输入。

EN

回答 4

Stack Overflow用户

发布于 2013-11-25 20:05:24

  • 删除正则表达式末尾的最后一个右括号-它应该看起来像-?\\d{1,4}\\d$"或更简单的\\d{2,5}$
  • \b (backspace symbol)更改为\\b如果您还希望它表示单词边界
  • ,请不要使用正则表达式检查整数范围,因为它不是用于此目的的适当工具。维护这样的正则表达式将是一场噩梦。相反,将您感兴趣的部分转换为整数(您可以使用>=).

)并使用比较运算符(<><=<=)的适当组合

票数 1
EN

Stack Overflow用户

发布于 2013-11-25 19:59:59

正则表达式包含2个左方括号(()和3个右方括号())。

错误

不匹配的结束')‘

是相当描述性的。

我假设您必须在这里的末尾添加一个左方括号:

代码语言:javascript
复制
-?\\d{1,4}\\d)$

我的正则表达式不够充分,但我相信这就是您想要的:

代码语言:javascript
复制
-?(\\d{1,4}\\d)$

为什么不直接获取前4个字符,看看它们是否在某个范围内?

代码语言:javascript
复制
var year = Integer.Parse(myString.SubString(0, 4)); // Error checking omitted

if(year > 1985 && year < 2005) { }
票数 0
EN

Stack Overflow用户

发布于 2013-11-25 20:06:48

在end

  • \b处有一个额外的右括号应该是\\b

  • Remove
  1. \\d (如果您只想匹配2到5)

,请将其前面的括号更改为{2,5}

所以,这是可行的:

代码语言:javascript
复制
if (car.matches("^\\b(19[3-9][0-9]|200[0-9]|201[0-2])\\b-?(KK|kk|ww|WW|c|C|ce|CE|cn|CN|cw|CW|d|D|dl|DL|g|G|ke|KE|ky|KY|l|L|ld|LD|lh|LH|lk|LK|lm|LM|ls|LS|mh|MH|mn|MN|mo|MO|oy|OY|so|SO|rn|RN|tn|TN|ts|TS|w|W|wd|WD|wh|WH|wx|WX)-?\\d{1,4}$")) {

还请注意,这与1930年以后的车牌匹配,而不是您在文本中指定的1980年。

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

https://stackoverflow.com/questions/20192495

复制
相关文章

相似问题

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