CoffeeScript 使用 Heregexes

2022-06-29 17:11 更新

使用 Heregexes

問題

你需要寫一個(gè)復(fù)雜的正則表達(dá)式。

解決方案

使用CoffeeScript的“heregexes”——可以忽視內(nèi)部空白字符并可以包含注釋的擴(kuò)展正則表達(dá)式。

pattern = ///
  ^\(?(\d{3})\)? # 采集區(qū)域代碼,忽略可選的括號(hào)
  [-\s]?(\d{3})  # 采集前綴,忽略可選破折號(hào)或空格
  -?(\d{4})      # 采集行號(hào),忽略可選破折號(hào)
///
[area_code, prefix, line] = "(555)123-4567".match(pattern)[1..3]
# => ['555', '123', '4567']

討論

通過打破復(fù)雜的正則表達(dá)式和注釋重點(diǎn)部分,它們變得更加容易去辨認(rèn)和維護(hù)。例如,現(xiàn)在這是一個(gè)相當(dāng)明顯的做法去改變正則表達(dá)式以容許前綴和行號(hào)之間存在可選的空間。

heregexes 中的空白字符

空白字符在heregexes中是被忽視的——所以如果要為ASCII空格匹配字符,你應(yīng)該怎么做呢?

我們的解決方案是使用@\s@字符組,它能夠匹配空格,制表符和換行符。假如你只想匹配一個(gè)空格,你需要使用\X20來表示字面上的ASCII空格。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)