Javascript 正規表達式(RegExp)介紹
RegExp有屬性和方法
屬性:修飾符
ignoreCase:忽略大小寫;i;屬性只讀
global:全局匹配;g;屬性只讀
multiline:多行匹配;m;屬性只讀
方法:
test 返回boolean
exec 返回找到的值,並傳回其位置。
compile 編譯正規表達式
常用的正則表達式中的特殊字元
\ |
用於要使用特殊字元當參考時 如:b用一般為搜尋a字元 加上\ 變成\b 則代表的是邊界功能(blcok) 如:*a在正規表達式代表匹配 0個或1個以上的a \*a就代表匹配*a 如:自己本生也可以加上\\來表示
|
^ |
用於匹配開頭 如^a就是匹配開頭為a的字串
|
$ |
用於匹配結尾 如a$就是匹配a結尾的字串
|
* |
匹配前一字 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/