溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JS正則表達(dá)式如何分組和引用

發(fā)布時間:2021-08-30 17:31:10 來源:億速云 閱讀:312 作者:chen 欄目:開發(fā)技術(shù)

這篇文章主要介紹“JS正則表達(dá)式如何分組和引用”,在日常操作中,相信很多人在JS正則表達(dá)式如何分組和引用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”JS正則表達(dá)式如何分組和引用”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

  JS正則表達(dá)式怎樣分組和引用

  這里的括號僅僅為了將 elp 自表達(dá)式與整個表達(dá)是隔離(因為 h 是必選的)。

  第二種情況,括號用來分組,當(dāng)正則表達(dá)式執(zhí)行完成之后,與之匹配的文本將會按照規(guī)則填入各個分組,比如,某個數(shù)據(jù)庫的主鍵是這樣的格式:四個字符表示省份,然后是四個數(shù)字表示區(qū)號,然后是兩位字符表示區(qū)縣,如 yunn0871cg 表示云南省昆明市呈貢縣(當(dāng)然,看起來的確很怪,只是舉個例子),我們關(guān)心的是區(qū)號和區(qū)縣的兩位字符代碼,怎么分離出來呢?

  var pattern = /\w{4}(\d{4})(\w{2})/;br data-filtered="filtered">

  var result = pattern.exec("yunn0871cg");br data-filtered="filtered">

  print("city code = "+result[1]+", county code = "+result[2]);br data-filtered="filtered">

  result = pattern.exec("shax0917cc");br data-filtered="filtered">

  print("city code = "+result[1]+", county code = "+result[2]);br data-filtered="filtered">

  正則表達(dá)式的 exec 方法會返回一個數(shù)組(如果匹配成功的話),數(shù)組的第一個元素(下標(biāo)為0)表示整個串,第一個元素為第一個分組,第二個元素為第二個分組,以此類推。因此上例的執(zhí)行結(jié)果即為:

  JS正則表達(dá)式怎樣分組和引用

  city code = 0871, county code = cgbr data-filtered="filtered">

  city code = 0917, county code = ccbr data-filtered="filtered">

  第三種情況,括號用來對引用起輔助作用,即在同一個表達(dá)式中,后邊的式子可以引用前邊匹配的文本,我們來看一個非常常見的例子:我們在設(shè)計一個新的語言,這個語言中有字符串類型的數(shù)據(jù),與其他的程序設(shè)計語言并無二致,比如:

  var str = "hello, world";br data-filtered="filtered">

  var str = 'fair enough';br data-filtered="filtered">

  均為合法字符,我們可能會設(shè)計出這樣的表達(dá)式來匹配該聲明:

  var pattern = /['"][^'"]*['"]/;br data-filtered="filtered">

  看來沒有什么問題,但是如果用戶輸入:

  var str = 'hello, world";br data-filtered="filtered">

  var str = "hello, world';br data-filtered="filtered">

  我們的正則表達(dá)式還是可以匹配,注意這兩個字符串兩側(cè)的引號不匹配!我們需要的是,前邊是單引號,則后邊同樣是單引號,反之亦然。因此,我們需要知道前邊匹配的到底是“單”還是“雙”。這里就需要用到引用,JavaScript 中的引用使用斜杠加數(shù)字來表示,如\1 表示第一個分組(括號中的規(guī)則匹配的文本),\2 表示第二個分組,以此類推。因此我們就設(shè)計出了這樣的表達(dá)式:

  var pattern = /(['"])[^'"]*\1/;br data-filtered="filtered">

  在我們新設(shè)計的這個語言中,為了某種原因,在單引號中我們不允許出現(xiàn)雙引號,同樣,在雙引號中也不允許出現(xiàn)單引號,我們可以稍作修改即可完成:

  var pattern = /(['"])[^\1]*\1/;br data-filtered="filtered">

  這樣,我們的語言中對于字符串的處理就完善了。

到此,關(guān)于“JS正則表達(dá)式如何分組和引用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

js
AI