前兩天看了看正則表達(dá)式,突然發(fā)現(xiàn)實(shí)在是個(gè)好東西,帥氣的不耀不耀的了簡(jiǎn)直,今天有空,就特意整理一下基礎(chǔ)的東西。
1、首先來(lái)說(shuō)一下到底什么是正則表達(dá)式。
RegExp: 正則表達(dá)式就是一種強(qiáng)大的字符串匹配工具
正則:就是規(guī)則
正則表達(dá)式:規(guī)則表達(dá)式。
其實(shí),所謂正則表達(dá)式就是規(guī)則表達(dá)式,它所表達(dá)的就是一種規(guī)則。
當(dāng)然,這里要說(shuō)一下的是:沒(méi)有什么事情是非正則不可的,但是正則的存在使我們的操作得到了極大的簡(jiǎn)化。
2、正則對(duì)象
JS語(yǔ)法中,創(chuàng)建一個(gè)新的對(duì)象可以用new,但是我們更常用的是perl風(fēng)格的正則表達(dá)式:
// js風(fēng)格:
var reg = new RegExp('a');
var reg = new RegExp('a','i');
// perl風(fēng)格:
var reg = /a/;
var reg = /a/i;
3、正則和字符串
我們?cè)贘S中常用的字符串操作有:search、substring、charAt、split、replace這幾種,其中replace的操作就是在正則中完美展示的。
// search 查找:存在的時(shí)候返回的是字符在字符串所處的位置,不存在的時(shí)候返回-1
var str='adcdef';
alert(str.search('a'));
// substring(起點(diǎn)位置,終點(diǎn)位置);
substring(1,4); // 表示從位置1開(kāi)始到位置4結(jié)束的字符
// charAt(位置點(diǎn));返回某一位置的字符
str.charAt(2); 返回的將是位置2處的字符: c
// split(); 切分字符串
var str='12-44-fff-ttt';
var arr=str.split('-');
alert(arr); // 這里返回arr數(shù)組為(12,44,fff,ttt)
// replace('舊詞','新詞'); 敏感詞過(guò)濾
str.replace('e','*'); // 這里返回的str將是:adcd*f,其中原來(lái)的e被*代替
3、元字符[]
這里所說(shuō)的元字符其實(shí)就可以理解為[]這個(gè)符號(hào)
此處講三種元字符形式:
[asd] 等價(jià)于“或”
例如:[asd]yt 表示的是:
ayt、syt、dyt、都是符合要求的,但是像byt、cyt等就不符合
[a-z] , [0-9] 等價(jià)于“區(qū)間、范圍”
[a-z]表示英文字母從a到z
[0-9]表示數(shù)字0到9
[^a-z] 等價(jià)于“除去、排除”
[^a-z] 表示除了字母a到z的其它字符
[^a-z0-9_]表示除了字母a到z、0-9以及下劃線的其它字符
5、轉(zhuǎn)義字符
\d 數(shù)字
\w 字母、數(shù)字、下劃線
\s 空字符
\D 除了數(shù)字
\W 除了字母數(shù)字下劃線
\S 非空字符
6、量詞
{n} 正好出現(xiàn)n次
// \d{8} 數(shù)字,正好出現(xiàn)8次(用來(lái)判斷電話(huà)號(hào)碼)
{n,m} 最少n次,最多m次
// [1-9]\d{4,10}表示第一位是數(shù)字1-9的任一個(gè),后面是四位到十位任意數(shù)字
{n,} 最少n次,最多不限
^ 有兩種意思:
在[]中意思是“除了”
不在[]中意思是“行首”,字符串開(kāi)頭
$ “行尾”,字符串結(jié)尾
? 等價(jià)于 {0,1} 可有可無(wú)(比如固定電話(huà)的區(qū)號(hào)和分機(jī)號(hào))
+ 等價(jià)于 {1,} (最少1次,最多不限) 若干(多少都行)
* 等價(jià)于 {0,} 沒(méi)出現(xiàn)也算,會(huì)導(dǎo)致判斷出錯(cuò),不推薦使用
另外還有兩個(gè)字母需要我們注意下:
i 忽略大小寫(xiě)
g 全局搜索的關(guān)鍵字
7、例子:
電話(huà)號(hào)碼校驗(yàn):
<!--電話(huà)號(hào)碼-->
<!-- 010-87664565 或者87664565 -->
<!-- (0\d{2,3}-)? 區(qū)號(hào) -->
<!-- [1-9]\d{7} 號(hào)碼 -->
<!-- (-\d{1,4})? 分機(jī)號(hào) -->
最后得到的固定電話(huà)的正則表達(dá)式就是:
(0\d{2,3}-)?[1-9]\d{7}(-\d{1,5})?
郵箱校驗(yàn):
郵箱:
一串?dāng)?shù)字、英文、下劃線 @ 一串英文數(shù)字 . 一串英文
\w+ @ [a-z0-9]+ \. [a-z]+
但是由于有時(shí)候會(huì)出現(xiàn)“!!!jiaoye000@163.com”這種不符合要求的假郵箱,所以就需要我們?cè)偌由?“行首”和 “行尾”的判斷
最后生成的就是這樣的格式用來(lái)驗(yàn)證郵箱號(hào)碼:
/^\w+@[a-z0-9]+\.[a-z]+$/i
其中的+表示的就是“一串”的意思。
-----------------------------
以上就是今天關(guān)于正則表達(dá)式的相關(guān)內(nèi)容了,看完之后有沒(méi)有覺(jué)得原來(lái)正則表達(dá)式居然可以這么簡(jiǎn)單。有沒(méi)有被帥到,反正我是被帥到了。
希望我的文章能對(duì)大家有所幫助??等雒讎}~~~