正則表達(dá)式、ES6 中的表達(dá)式的新特性

正則表達(dá)式用于對(duì)字符串模式匹配及檢索替換,是對(duì)字符串執(zhí)行模式匹配的強(qiáng)大工具。

一、正則表達(dá)式

1、定義正則(語(yǔ)法):

new RegExp('pattern','modifiers');
/pattern/modifiers
pattern(模式) 描述了表達(dá)式的模式
modifiers(修飾符) 用于指定全局匹配、區(qū)分大小寫(xiě)的匹配和多行匹配

2、修飾符:

i 忽略大小寫(xiě)
m 多行模式
g 全局

3、正則中方法:

1)str.search(reg); //搜索
如果找到,返回什么第一個(gè)找到的位置
如果找不到,返回-1, indexOf
2)str.match(reg); //匹配
如果匹配上,返回的是數(shù)組
否則, null
3)str.replace('str1','str2');
//只替換第一個(gè)
4)regx.test(str); // 能匹配上,返回true,否則 返回false

4、規(guī)則
1)方括號(hào):方括號(hào)用于查找某個(gè)范圍的字符

1.1)或 [123] 1或2或3
1.2)范圍 [a-zA-Z0-9]
1.3)排除 [^]

2)修飾:

行首,行尾 ^$
. 點(diǎn) 所有的字符

3)量詞:

{}
{n} n個(gè)
{n,m} 最少n個(gè),最多m個(gè)
{n,} 最少n個(gè),最多不限
{0,1} 最少0個(gè),最多 1 個(gè) ----- ? --可有可無(wú)
{1,} 最少1個(gè),最多不限 ----- +
{0,} 最少0個(gè),最多不限 ----- *

3)轉(zhuǎn)義:


\n 換行
\d 數(shù)字
\
\\ \

\w 字母,數(shù)字,下劃線_
\d 數(shù)字
\s 空白 tab 空格 換行

\W \D \S 是與小寫(xiě)字母相反的
eg:

1)  匹配  固定電話(huà)
規(guī)則:
        82323238
        5727323
        010-88234582
        0476-5329878

        如果有-,前面是3或4位數(shù)字
        如果有-,后面是7或8位數(shù)字
        一共不超過(guò)12位數(shù)字
        如果有區(qū)號(hào),第一位是0
        可以沒(méi)有區(qū)號(hào)
---------------------------------
分析:
    區(qū)號(hào)可有可無(wú)
    有區(qū)號(hào):
        第一位是0
        3-4位
        -
    電話(huà)部分:
        第一位不是0      6-7位數(shù)字
---------------------------------
固定電話(huà):
    var regx = /^(0[1-9]\d{1,2}\-)?[1-9]\d{6,7}$/;
---------------------------------

2)手機(jī)號(hào):
    var regx = /^1[345789]\d{9}$/;
3)郵箱:
    var regx = /^\w{1,30}@[0-9a-z\-]{2,20}(\.[a-z1-9]{2,3}){1,2}$/;
4)年齡:
    var regx = /^(1[89])|([2-9]\d)|(100)$/;

二、ES6中新增的正則特性

ES6 改變了這種行為。如果RegExp構(gòu)造函數(shù)第一個(gè)參數(shù)是一個(gè)正則對(duì)象,那么可以使用第二個(gè)參數(shù)指定修飾符。而且,返回的正則表達(dá)式會(huì)忽略原有的正則表達(dá)式的修飾符,只使用新指定的修飾符。

  new RegExp(/abc/ig, 'i').flags
  // "i"

上面代碼中,原有正則對(duì)象的修飾符是ig,它會(huì)被第二個(gè)參數(shù)i覆蓋。

1、修飾符
1)u(新增)

Unicode 模式”,用來(lái)正確處理大于\uFFFF的 Unicode 字符。也就是說(shuō),會(huì)正確處理四個(gè)字節(jié)的 UTF-16 編碼。

  /^\uD83D/u.test('\uD83D\uDC2A') // false
  /^\uD83D/.test('\uD83D\uDC2A') // true

上面代碼中,\uD83D\uDC2A是一個(gè)四個(gè)字節(jié)的 UTF-16 編碼,代表一個(gè)字符。但是,ES5 不支持四個(gè)字節(jié)的 UTF-16 編碼,會(huì)將其識(shí)別為兩個(gè)字符,導(dǎo)致第二行代碼結(jié)果為true。加了u修飾符以后,ES6 就會(huì)識(shí)別其為一個(gè)字符,所以第一行代碼結(jié)果為false。

一旦加上u修飾符號(hào),就會(huì)修改下面這些正則表達(dá)式的行為。

2、屬性
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 初衷:看了很多視頻、文章,最后卻通通忘記了,別人的知識(shí)依舊是別人的,自己卻什么都沒(méi)獲得。此系列文章旨在加深自己的印...
    DCbryant閱讀 4,071評(píng)論 0 20
  • 正則表達(dá)式功能: 測(cè)試字符串的某個(gè)模式。例如對(duì)一個(gè)輸入字符串進(jìn)行測(cè)試,看在該字符串是否存在一個(gè)電話(huà)號(hào)碼模式或一個(gè)信...
    DecadeHeart閱讀 618評(píng)論 0 1
  • 正則表達(dá)式(Regular Expression)是計(jì)算機(jī)科學(xué)的一個(gè)概念。正則表達(dá)式使用單個(gè)字符串來(lái)描述、匹配一系...
    草鞋弟閱讀 774評(píng)論 0 0
  • 1. 正則表達(dá)式:規(guī)定字符串中字符出現(xiàn)規(guī)律的規(guī)則。 何時(shí)使用:查找 驗(yàn)證 替換 切割 模糊查找,驗(yàn)證字符...
    qhaobaba閱讀 850評(píng)論 0 0
  • 如何遇見(jiàn)好中文,如何寫(xiě)作行云流水的文章,如何通過(guò)好中文過(guò)上好生活呢,有人說(shuō)寫(xiě)得越多越迷失,學(xué)而不思則罔,知識(shí)輸入多...
    牛牛牛牛牛魔王閱讀 501評(píng)論 0 1