3區碼+7號碼檢查

    內容表格
    沒有標頭

    版本為 17:03, 30 Nov 2024

    到這個版本。

    返回到 版本存檔.

    查閱目前版本

    var pattern;
    這邊有個需求表示要驗證電話號碼的區碼加號碼檢查. 給定的格式有兩種:
    1. (zzz)nnnnnnn
    2. zzz-nnnnnnn
    允許匹配: 035-678989, (024)935436
    為了要符合這個格式, 用天書般一樣的Regular Expression是非常簡潔的方法. 首先要拆開兩部分: 區碼, 號碼.
    區碼形式: (zzz)和zzz- . 規定形式必須符合這兩種之一. 兩種之一表示或著的情況, 可以使用候選 | .
    if t1=(zzz) and t2=zzz-
    then t1|t2
    t1與t2有一個共通點, 就是他們都是規定3區碼, 所以要符合3區碼的限制. 這是一般化規則.
    1. 要符合3區碼原則.
    2. 必須是數字格式.
    既然是只有數字, 只有普通字元的範圍類規則是適合的, [0-9]或著\d預定義類. 另外必須要3區碼顯示. 所以可以配套量詞來展現.
    zzz=\d{3}=[0-9]{3}
    有了這個pattern以後, 再來的差異化就是 () 和 -. t1必須規定有 () 包住.
    t1=\(\d{3}\)=(zzz)
    因為 ( 和 ) 都是有意義的字元, 必須要使用拖曳字元 \ . 而t2則是zzz- 的形式.
    t2=\d{3}-
    我們得到了t1和t2以後, 將其帶入t1|t2的形式: \(\d{3}\)|\d{3}- . 符合了(zzz)和zzz-的兩種3區碼格式要求. 剩下的是一般化的號碼檢查. 規定只有兩種:
    1. 以7碼格式為原則.
    2. 必須是數字格式
    在一般化的情況下, 顯得相當易懂. 使用\d{7}的表示型便可符合此兩個要求.
    在3區碼和7號碼的pattern都得到以後. 這邊我考慮判定3區碼優先匹配: (t1|t2)=(\(\d{3}\)|\d{3}-) . 剩下再加入7號碼pattern. 最後成為: (\(\d{3}\)|\d{3}-)\d{7} . 這便是一個完整的pattern.
    pattern=/^(\(\d{3}\)|\d{3}-)\d{7}$/;

    Powered by MindTouch Core