js使用match函式寫正規表示式,引數帶變數,怎麼寫?

時間 2022-01-06 16:12:04

1樓:薇蜜的夏天

//方法1: match 推薦

//例1.

constid=

window

.location

.search

.match

(/id=(\S*?)&/)[1

]//例2.

const

str=

window

.location

.search

//"?type=store&id=123&t=1"

const

[,type]=

str.

match

(/type=(\S*?)&/

)//['type=store&', 'store', index: 1, input: '?

type=store&id=123&t=1', groups: undefined]

console

.log

(type

)/// "store"

// 方法2:slice/substring + indexOfonst

str=

window

.location

.saerch

// "?type=store&id=123&t=1"

const

[,type]=

str.

slice

(str

.indexOf

("type="

),str

.indexOf

("&"

)).split

("="

)console

.log

(type

)// "store"

為什麼使用正規表示式會慢?

這題我知道,我來答一下。因為有的正則引擎使用NFA來做字串匹配,NFA有很多不同的路徑,當嘗試的某一路徑錯誤的時候就要回溯到前一狀態,嘗試其他路徑,所以時間複雜度較大。不知道是否有正則引擎用DFA來實現,DFA是最大匹配原則,只用跑一遍字串即可,時間複雜度與字串的長度相關,但是實現麻煩成本高。 已登...

如何在python中使用正規表示式提取巢狀標籤

F period 這是個很有意思的問題,之前的回答中也有人提出了解決方案 import resource text aaabbbccc regex result re findall regex source text 當然這麼做的前提是你的原資料是規範的XML,規範的XML文字內容中不允許含有 這...

Java正規表示式捕獲組問題?

李昂 沒有輸出顯然是因為字串中沒有匹配你pattern的,你的pattern是指1到9其中乙個數字出現一次,然後後面跟著零或多個的數字,然後後面再緊接著出現乙個或多個0。另外,你如果是是想1 9的數字出現零次或多次就得寫 0 9 而不是 0 9 d 中文居然能把正規表示式表達得這麼清楚,感覺可以用中...