帥你一臉的正則表達(dá)式

前兩天看了看正則表達(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ì)大家有所幫助??等雒讎}~~~

最后編輯于
?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 推薦幾個(gè)正則表達(dá)式編輯器 Debuggex :https://www.debuggex.com/ PyRegex:...
    木易林1閱讀 11,864評(píng)論 9 151
  • 幾個(gè)正則表達(dá)式編輯器 Debuggex :https://www.debuggex.com/ PyRegex:ht...
  • 初衷:看了很多視頻、文章,最后卻通通忘記了,別人的知識(shí)依舊是別人的,自己卻什么都沒(méi)獲得。此系列文章旨在加深自己的印...
    DCbryant閱讀 4,265評(píng)論 0 20
  • 正則表達(dá)式到底是什么東西?字符是計(jì)算機(jī)軟件處理文字時(shí)最基本的單位,可能是字母,數(shù)字,標(biāo)點(diǎn)符號(hào),空格,換行符,漢字等...
    獅子挽歌閱讀 2,292評(píng)論 0 9
  • 忘了從哪收集的資料了,放這兒,以備不時(shí)之需。 只能輸入數(shù)字:"^[0-9]*$"。 只能輸入n位的數(shù)字:"^\d{...
    study_monkey閱讀 1,488評(píng)論 0 7

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