正則表達式經常使用要領和劃定規矩整頓

作者:心恭弘=叶 恭弘
時候:2018-04-28 09:33

一:經常運用正則對象要領

RegExpObject.exec(string)

檢索字符串中指定的值,假如婚配到,返回花樣以下: { 0:’婚配的字符串’, 1:’婚配的第一個元祖,假如有的話’, 2:’以此類推,第二個元祖’, …… index:’婚配文本的第一個字符的位置’, input:’輸入的婚配的本來字符串’, length:’0,1,2,…的個數’ } exec假如婚配不到,返回null。

主要事項:完成了一次形式婚配以後檢索新的字符串前應當手動地把正則對象的lastIndex屬性重置為 0。

RegExpObject.test(string)

檢索字符串中指定的值,假如字符串 string 中含有與RegExpObject婚配的文本,則返回 true,不然返回 false。

二:經常運用字符串對象要領

stringObject.search(regexp)

檢索與正則表達式相婚配的值,返回stringObject中第一個與regexp相婚配的子串的肇端位置,假如沒有找到返回-1;search()要領不實行全局婚配,它將疏忽標誌 g。它同時疏忽regexp的lastIndex屬性,而且老是從字符串的最先舉行檢索,這意味着它老是返回stringObject的第一個婚配的位置。

stringObject.match(searchvalue|regexp)

找到一個或多個正則表達式的婚配,返回婚配的字符串數組。

stringObject.replace(regexp|substr,replacement|function)

替代與正則表達式婚配的子串。
溫馨提醒:个中function通報進去的是婚配的字符串,return返回的是末了替代成的,相似管道的寫法。

 stringObject.split(separator[,howmany])

把字符串分割為字符串數組,返回切割后的數組。

三:零寬斷言

零寬,意味者不會返回婚配的字符;斷言,就是展望此處是什麼。因而這是一種婚配不返回,只是猜想牢固位置應當是什麼的存在。

3.1 婚配目的的背面是exp:(?=exp)

比方如今須要婚配一個單詞是以ing末端的,然則末端的ing不捕捉,能夠如許運用:

//返回效果是["do", "heee"]。

"name-doing-text-heeeing".match(/([a-z]+(?=ing))/g);

3.2 婚配目的的背面不是exp:(?!exp)

比方如今須要在一個單詞內里尋覓一些字母,這些字母的下一個字母不能夠是e,能夠如許運用:

//返回的效果是["d", "e", "a", "m"]

"dream".match(/([a-z]{1}(?!e))/g);

3.3.(? <=exp)【 婚配exp背面的位置[親身測試JavaScript中不支持]】

3.4 “(?<!exp)”【婚配前面不是exp的位置[親身測試JavaScript中不支持]】

如 “abc123 ” 正則 “(?<![0-9])123″ 婚配”123″前面黑白数字的效果也可寫成”(?!<d)123”

四:懶散限定符

1.”*?”【反覆恣意次,但盡量少反覆】

//1-name-2
'1-name-2-name-2'.match(/1.*?2/);

//1-name-2-name-2
'1-name-2-name-2'.match(/1.*2/);

2.+?【反覆1次或更屢次,但盡量少反覆】

3.??【反覆0次或1次,但盡量少反覆】

4.{n,m}?【反覆n到m次,但盡量少反覆】

5.{n,}?【反覆n次以上,但盡量少反覆】

五:捕捉分組

1.(exp)【婚配exp,並捕捉文本到自動定名的組裡】

2.(?<name>exp)【婚配exp,並捕捉文本到名稱為name的組裡[親身測試JavaScript中不支持]】

3.(?:exp)【婚配exp,不捕捉婚配的文本,也不給此分組分派組號】

    原文作者:心恭弘=叶 恭弘
    原文地址: https://segmentfault.com/a/1190000014646641
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞