国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS中正則表達(dá)式研究(一)

zhouzhou / 1642人閱讀

摘要:因?yàn)樽鲆坏李},題目如下其中一個(gè)解答,引起了我對(duì)正則的研究興趣,解答如下我對(duì)正則表達(dá)式中的正向肯定預(yù)查一直不帶明白,所以趁這個(gè)機(jī)會(huì)研究一下。與此同時(shí),對(duì)象的更新為下一次開始匹配的索引值。

因?yàn)樽鲆坏李}(http://www.codewars.com/kata/insert-dashes/solutions/javascript),題目如下:

Write a function insertDash(num) that will insert dashes ("-") between
each two odd numbers in num. For example: if num is 454793 the output
should be 4547-9-3. Don"t count zero as an odd number.

其中一個(gè)解答,引起了我對(duì)正則的研究興趣,解答如下:

function insertDash(num) {
   return String(num).replace(/([13579])(?=[13579])/g, "$1-");
}

我對(duì)正則表達(dá)式中的 正向肯定預(yù)查(?=pattern)一直不帶明白,所以趁這個(gè)機(jī)會(huì)研究一下。

下面是我的測(cè)試代碼:

var str = "13579";

var regArr = [
  /([13579])([13579])/g,    // capturing groups
  /([13579])(?:[13579])/g,  // non-capturing groups
  /([13579])(?=[13579])/g   // Assertions 
  ];


regArr.forEach(function(reg){
  console.log("regexp:", reg);
  while((q=reg.exec(str)) != null){
    console.log(q, "lastIndex", reg.lastIndex);
  }
  console.log("result:", str.replace(reg, "$1-"));
});

測(cè)試代碼的輸出:

regexp: /([13579])([13579])/g
["13", "1", "3", index: 0, input: "13579"] "lastIndex" 2
["57", "5", "7", index: 2, input: "13579"] "lastIndex" 4
result: 1-5-9
regexp: /([13579])(?:[13579])/g
["13", "1", index: 0, input: "13579"] "lastIndex" 2
["57", "5", index: 2, input: "13579"] "lastIndex" 4
result: 1-5-9
regexp: /([13579])(?=[13579])/g
["1", "1", index: 0, input: "13579"] "lastIndex" 1
["3", "3", index: 1, input: "13579"] "lastIndex" 2
["5", "5", index: 2, input: "13579"] "lastIndex" 3
["7", "7", index: 3, input: "13579"] "lastIndex" 4
result: 1-3-5-7-9

regexObj.exec(str) 返回結(jié)果是一個(gè)數(shù)組,其中第一個(gè)成員是所匹配的字符串,接下來是捕獲的分組,它有一個(gè)index 屬性,表明是從哪個(gè)地方開始匹配的。與此同時(shí),reg 對(duì)象的 lastIndex 更新為下一次開始匹配的索引值。

/([13579])([13579])/g 每次匹配兩個(gè)字符,下次開始匹配位置 +2, 每次產(chǎn)生兩個(gè)捕獲分組;

/([13579])(?:[13579])/g, 每次也匹配兩個(gè)字符,下次開始匹配位置 +2, 由于使用了非捕獲匹配,所以每次產(chǎn)生一個(gè)捕獲分組;

/([13579])(?=[13579])/g, (?=[13579])只幫助定位匹配的位置,并不屬于匹配的字符,所以每次匹配一個(gè)字符,所以下一次開始匹配位置 +1 ;

參考

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/86073.html

相關(guān)文章

  • 正則達(dá)式

    摘要:本文內(nèi)容共正則表達(dá)式火拼系列正則表達(dá)式回溯法原理學(xué)習(xí)正則表達(dá)式,是需要懂點(diǎn)兒匹配原理的。正則表達(dá)式迷你書問世了讓幫你生成和解析參數(shù)字符串最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫,作用是對(duì)字符串執(zhí)行模式匹配。 JS 的正則表達(dá)式 正則表達(dá)式 一種幾乎可以在所有的程序設(shè)計(jì)語言里和所有的計(jì)算機(jī)平臺(tái)上使用的文字處理工具。它可以用來查找特定的信息(搜索),也可以用來查...

    bang590 評(píng)論0 收藏0
  • 正則達(dá)式前端使用手冊(cè)

    摘要:非貪婪模式盡可能少的匹配所搜索的字符串,而默認(rèn)的貪婪模式則盡可能多的匹配所搜索的字符串。 導(dǎo)讀 你有沒有在搜索文本的時(shí)候絞盡腦汁, 試了一個(gè)又一個(gè)表達(dá)式, 還是不行. 你有沒有在表單驗(yàn)證的時(shí)候, 只是做做樣子(只要不為空就好), 然后燒香拜佛, 虔誠祈禱, 千萬不要出錯(cuò). 你有沒有在使用sed 和 grep 命令的時(shí)候, 感覺莫名其妙, 明明應(yīng)該支持的元字符, 卻就是匹配不到. 甚至,...

    zhoutao 評(píng)論0 收藏0
  • 我所理解的正則達(dá)式

    摘要:關(guān)于,新手理解起來可能比較困難,尤其是一些很牛逼的預(yù)查正則表達(dá)式。非貪婪與貪婪的問題貪婪出現(xiàn)在這種不確定數(shù)量的匹配中,所謂的貪婪,表示正則表達(dá)式在匹配的時(shí)候,盡可能多的匹配符合條件的內(nèi)容。 學(xué)習(xí)了半年的正則表達(dá)式,也不能說一直學(xué)習(xí)吧,就是和它一直在打交道,如何用正則表達(dá)式解決自己的問題,并且還要考慮如何在匹配大量的文本時(shí)去優(yōu)化它。慢慢的覺得正則已經(jīng)成為自己的一項(xiàng)技能,逐漸的從一個(gè)正則表...

    _Zhao 評(píng)論0 收藏0
  • 我所理解的正則達(dá)式

    摘要:關(guān)于,新手理解起來可能比較困難,尤其是一些很牛逼的預(yù)查正則表達(dá)式。非貪婪與貪婪的問題貪婪出現(xiàn)在這種不確定數(shù)量的匹配中,所謂的貪婪,表示正則表達(dá)式在匹配的時(shí)候,盡可能多的匹配符合條件的內(nèi)容。 學(xué)習(xí)了半年的正則表達(dá)式,也不能說一直學(xué)習(xí)吧,就是和它一直在打交道,如何用正則表達(dá)式解決自己的問題,并且還要考慮如何在匹配大量的文本時(shí)去優(yōu)化它。慢慢的覺得正則已經(jīng)成為自己的一項(xiàng)技能,逐漸的從一個(gè)正則表...

    K_B_Z 評(píng)論0 收藏0
  • 讀《精通正則達(dá)式》-- 網(wǎng)上 js 正則基礎(chǔ)教程沒有涉及的些知識(shí)

    摘要:正則起源最近看完了精通正則表達(dá)式,收獲頗豐,略過了一些晦澀難懂的理論部分,主要看了實(shí)戰(zhàn)和教程部分。然后下面說一下以上兩個(gè)基礎(chǔ)教程里沒說到的知識(shí)點(diǎn)。最后以上是我在精通正則表達(dá)式一書中得到的一些收獲,希望能分享給大家,如有錯(cuò)誤歡迎指正。 正則起源 最近看完了 《精通正則表達(dá)式》,收獲頗豐,略過了一些晦澀難懂的理論部分,主要看了實(shí)戰(zhàn)和教程部分。 下面引用一下百度百科里的內(nèi)容。 正則表達(dá)式的鼻...

    GT 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<