簡體   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