Javascript RegExp

Javascript 正規表達式(RegExp)介紹

RegExp有屬性和方法

屬性:修飾符

 ignoreCase:忽略大小寫;i;屬性只讀

 global:全局匹配;g;屬性只讀

 multiline:多行匹配;m;屬性只讀

方法:

test 返回boolean

exec 返回找到的值,並傳回其位置。

compile 編譯正規表達式

常用的正則表達式中的特殊字元

\

用於要使用特殊字元當參考時

如:b用一般為搜尋a字元 加上\ 變成\b 則代表的是邊界功能(blcok)
/\bter\b/.test("interview");  // false
/\bter\b/.test("in ter view");  // true

如:*a在正規表達式代表匹配 0個或1個以上的a  \*a就代表匹配*a
/aaaa*/.test("aaa");  // true
/aaa\a*/.test("aaa"); // false;

如:自己本生也可以加上\\來表示
/\\/.test("\\text1");   // true

 

 

^

用於匹配開頭

如^a就是匹配開頭為a的字串
/^a123456/.test("a123456")  //  true
/^a123456/.test("ba123456")  //  false

 

$

用於匹配結尾

如a$就是匹配a結尾的字串
/123456a$/.test("123456a")  //  true
/123456a$/.test("123456ab")  //  false

 

*

匹配前一字 0個或是0個以上的

如a*就是匹配0-多個a的字串

/123456a*/.test("123456");  // true

+

匹配前一字 1個以上的

如a+就是匹配0-多個a的字串

/123456a+/.test("123456a"); // true

 

{n,m}

n和m都為正整數 n為最小 m為最大

/a{1,3}/.test("128789aaaaaaaaaaaaaaaaaaa"); //true

[xyz]

字元的集合。此格式會匹配中括號內所有字元

/[a-z]/.test("asbdsdf"); // true

第七代身分證檢查

function checkid(id)
{
    
    var check=/^[A-Z][1|2]\d{8}$/;  //檢查第一個數為A-Z 第二數為1或2 限制後面為8碼
    var alphabet=id.toUpperCase().split('');
    if(!check.test(id))
    return false;
    else
    {
      var sum=0;
      var multiplication=[1,9,8,7,6,5,4,3,2,1,1];
      var number=(alphabet[0].charCodeAt()-55).toString().split('');
      for(var i=0;i<multiplication.length;i++)
      {
        if(i<2)
        sum+=number[i]*multiplication[i];
        else
        sum+=alphabet[i-1]*multiplication[i]
      }
      
      return sum%10==0?true:false
    }
    
}

身分證規則參考:https://zh.wikipedia.org/wiki/

Regexp詳細資料:https://developer.mozilla.org/