正則

正則:

它就是一個(gè)規(guī)則,用來處理字符串的一個(gè)規(guī)則(正則就是用來處理字符串的)

1、處理:

a、匹配:判斷一個(gè)字符串是否符合我們制定的規(guī)則---->用test進(jìn)行判斷 test:reg.test(str)

b、捕獲:把字符串中符合我們正則規(guī)則的內(nèi)容捕獲到--->exec:reg.exec(str)

2、如何創(chuàng)建一個(gè)正則

字面量方式: var reg=/\d/;

實(shí)例創(chuàng)建方式:var reg=new RegExp("");

兩種創(chuàng)建方式的區(qū)別:
a、字面量方式中出現(xiàn)的一切都是元字符,所以不能進(jìn)行變量值的拼接,而實(shí)例創(chuàng)建的方式是可以的
b、字面量方式中直接寫\d就可以,而在實(shí)例中需要把它轉(zhuǎn)譯 \\d

在字面量方式中,/ /之間包起來的所有內(nèi)容都是元字符,有的具有特殊意義,大部分都是代表本身含義的普通的元字符

var name="abc";
var reg=/^\d+"+name+"\d+$/g;
console.log(reg.test("1234abc5678"));  //--->false
consloe.log(reg.test('1234""""nameeee"5678'));  //--->true

以上情況,只能使用實(shí)例創(chuàng)建方式了
var reg=new RegExp("^\\d+"+name+"\\d+$","g");

3、如何學(xué)習(xí)正則:

console.dir(RegExp.prototype);來學(xué)習(xí),看正則原型上都有哪些方法(用面向?qū)ο笏枷雭韺W(xué)習(xí)js)

正則的元字符及簡單應(yīng)用:

元字符:每一個(gè)正則表達(dá)式都是由元字符和修飾符組成的,【元字符】:在 / /之間具有意義的一些字符
1、具有特殊意義的元字符:
\:轉(zhuǎn)義字符,轉(zhuǎn)譯后面字符所代表的含義
^:以某一個(gè)元字符開始(沒有實(shí)際位置)
$:以某一個(gè)元字符結(jié)尾(沒有實(shí)際位置)eg:

var reg=/\d/;  //--->包含一個(gè)0-9之間的數(shù)字`
`var reg=/^\d$/;  //^和$放一起用時(shí)代表只能是xxx的意思,只能是一個(gè)0-9之間的數(shù)字

\n:匹配一個(gè)換行符
.:除了\n以外的任意字符
eg:

var reg=/^0.2$/;  //以0開頭,以2結(jié)尾,中間可以是除了\n的任意字符`
`var reg=/^0\.2$/; //此時(shí) . 就代表小數(shù)點(diǎn),用轉(zhuǎn)義字符實(shí)現(xiàn)

( ):分組--->把一個(gè)大正則本身劃分成幾個(gè)小正則(var reg=/^(\d+)haha(\d+)$/
a、分組的作用一:改變x|y的默認(rèn)優(yōu)先級(jí)
eg:

var reg=/^18|19$/; 
//符合的有18、19、181、189、119、819、1819....或以1開頭,或以9結(jié)尾;或者以18開頭,或以19結(jié)尾
var reg=/^(18|19)$/;  //只能是要么18要么19了

[ ]
a、在[ ]中出現(xiàn)的所有的字符都是代表本身意思的的字符(沒有特殊含義)
b、中括號(hào)中不識(shí)別兩位數(shù)

var reg=/^[12]$/;  //---->不是12,代表1或者2中的一個(gè)
var reg=/^[12-68]$/;  //不是12-68,是指1、2-6中的一個(gè)、8,這三個(gè)中的一個(gè)

c、
var reg=/^[\w-]$/; //---->數(shù)字、字母、下劃線、- 中的一個(gè)

x|y:x或者y中的一個(gè)
[xyz]:x或者y或者z中的一個(gè)
[^xyz]:除了xyz三個(gè)以外的任何一個(gè)字符
[a-z]:a-z之間的任何一個(gè)字符
[^a-z]:除了a-z之間的任何一個(gè)字符
\d:一個(gè)0-9之間的數(shù)字
\D:除了0-9之間的數(shù)字以外的任何字符
\b:匹配一個(gè)邊界符
\w:數(shù)字、字母、下劃線中的任意一個(gè)字符。等同于[0-9a-zA-Z_]
\s:匹配一個(gè)空白字符 空格、一個(gè)制表符、換頁符
2、代表出現(xiàn)次數(shù)的量詞元字符:
*:出現(xiàn)零到多次
+:出現(xiàn)一到多次(最少出現(xiàn)一次)
?:出現(xiàn)零次或者一次
{n}:出現(xiàn)n次
{n,}:出現(xiàn)n到多次
{n,m}:出現(xiàn)n到m次
eg:

var reg=/^\d+$/;  //只能是一到多個(gè)數(shù)字,且每個(gè)都在0-9之間
var reg=/^1\d{10}$/;  //簡單的驗(yàn)證手機(jī)號(hào)的正則:11位數(shù)字,第一位是1;)
元字符的簡單應(yīng)用:

1、有效數(shù)字的正則:(正數(shù)、負(fù)數(shù)、零、小數(shù))
a、“.”可以出現(xiàn)也可以不出現(xiàn),一旦出現(xiàn),后面必須跟著一位或多位數(shù)字
var reg=/^(\.\d+)?$/;
b、最開始可以有+/-,也可以沒有
var reg=/^[+-]?$/;
c、整數(shù)部分,一位數(shù)可以是0-9之間的一個(gè),多位數(shù)不能以0開頭
var reg=/^(\d|([1-9]\d+))$/; //改變優(yōu)先級(jí)了

2、年齡介于18-65之間:
給劃分為三段:18-19,20-59,60-65(有規(guī)律的)
var reg=/^(1[8-9]|[2-5]\d|6[0-5])$/;

3、驗(yàn)證郵箱的正則(簡版):
左邊:數(shù)字、字母、下劃線、“.”、“-”等,例如:123456789@qq.com,12345678@163.com.cn,hahahah@kindle.cn
var reg=/^[\w.-]+@[0-9a-zA-Z]+(\.[a-zA-Z]{2-4}){1,2}$/; //最后是指(\.[a-zA-Z]{2-4})整個(gè)再出現(xiàn)1或2次(.com.cn);+指重復(fù)一或多次

4、中國標(biāo)準(zhǔn)真實(shí)姓名: 2-4位漢字
var reg=/^[\u4e00-\u9fa5]{2,4}$/;
\u4e00和\u9fa5代表最開始和結(jié)尾漢字的Unicode編碼

5、身份證號(hào)碼:
var reg=/^(\d{2})(\d{4})(\d{4})(\d{2})(\d{2})(\d{2})(\d)(\d|X)$/;
省(2位)+市(4位)+出生年+月+日+(2位數(shù))+性別(1位,男奇數(shù)女偶數(shù))+尾數(shù)(數(shù)或X)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容