【问题标题】:string matching using regular expressions in java在java中使用正则表达式匹配字符串
【发布时间】:2017-10-23 11:25:21
【问题描述】:

我想像这样匹配电话号码, 它应该有 3 位数字,除了 000,666 和 900-999 之间的任何数字,然后是 - 然后是 2 位数字,然后是 - 然后是 4 位数字。 例如:123-75-3456 是数学 000-23-3452 不匹配(无 000) 915-23-4534 不匹配(大于 900) 有人可以帮忙吗? 抱歉忘记添加我尝试过的内容, [0-9&&^[000,666,[900-999]]{3}-[0-9]{2}-[0-9]{4}

【问题讨论】:

  • 你有没有尝试过?
  • www.regex101.com
  • 添加了我尝试过的内容。
  • 我正在写一些代码。然后你会告诉我是否可以

标签: java regex


【解决方案1】:

我认为这个应该可以解决问题:

^(?!000|666|9\d{2})\d{3}-\d{2}-\d{4}$

编辑:我在this thread 中找到了否定的前瞻语法。

编辑 2:这里有一个小代码 sn-p 供想要测试的人使用:

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {

    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("^(?!000|666|9\\d{2})\\d{3}-\\d{2}-\\d{4}$");
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("Next number :");
            Matcher matcher = pattern.matcher(sc.nextLine());
            if (matcher.find()) {
                System.out.println("Matches");
            } else {
                System.out.println("Doesn't match");
            }
        }
    }
}

【讨论】:

  • 你能解释一下吗? \ 是做什么的?
  • \ 转义另一个字符。在这里,d 被转义,与 [0-9] 的含义相同:0 到 9 之间的任何数字。
  • 它有效,也从这个regex101.com/r/YVAXSQ/3理解了含义
猜你喜欢
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-26
相关资源
最近更新 更多