繁体   English   中英

使用正则表达式模式的电话号码类别

[英]Telephone number category using regex pattern

我想获得用户输入的电话号码。 我有2个数字类别,黄金和普通。 当用户输入特定的电话号码格式时,系统会自动将其确定为“黄金”或“正常”。 我在编码某些模式时遇到问题。 黄金模式编号之一是这样的:AB001234其中AB是编号12,23,34,45,56,67,78和89之类的。到目前为止,我得到了什么。

    public static void main(String[] args) {

    Scanner userinput = new Scanner(System.in);


    System.out.println("Enter Telephone Number");
    String nophone = userinput.next();

    String Golden = "(\\d)(\\1)002345|(\\d*)12345$";
    //I want to add AB001234 pattern to the line above but I don't know how.


    if (nophone.matches(Golden)) {
        System.out.println("Golden");
    }


    else {
        System.out.println("Normal");
    }
    }

我不确定我是否真的必须使用正则表达式。 还有一个问题,您可以看到String Golden的第一部分没有$,而第二部分则有$。 我不确定放置或删除$符号的效果。

(\\\\d)(\\\\1)不检查该序列像1223等..相反,它会检查像两个SMAE连续的数字112233 ,...

要检查顺序,您必须使用Pipe(|) - (12|23|34|45|...)显式地进行操作

因此,您的Golden Number格式应如下所示:-

^(?:12|23|34|45|56|67|78|89)001234$

(?:..) -表示non-capturing group 在您的图案中,它不会被捕获为带编号的组。

注意:-如果sequence的长度不同,则Regex不是匹配它们的适当方法。

对于第二个问题, $表示字符串的结尾。 因此,以$结尾的模式将在字符串的末尾匹配。 另外, Caret (^)可以匹配字符串的开头。

例如:-

  • abc$与字符串"asdfabc"匹配,但与"asdfabc""sdfabcf"
  • ^abc与字符串"abcfsdf"匹配,但与"abcfsdf""sdfabcf"
  • ^abc$只匹配字符串"abc" ,因为它是唯一以"abc"开头和结尾的字符串。

您可以通过以下链接来了解有关Regexp更多信息:-

为了得到这个:

AB001234,其中AB是12、23、34、45、56、67、78和89之类的数字。

正则表达式如下所示:

^(12|23|34|45|56|67|78|89)001234$

$符号表示字符串的结尾。 这意味着,如果在最后一个字符之后有任何其他字符,则该字符串将与正则表达式不匹配。

^符号表示字符串的开头。

有关更多信息,请在Javadoc API上查看正则表达式构造摘要

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM