var path = '/user/tobi'
path.match(/user/);
//result: ["user"]
path.match(/(user)/);
//result: ["user", "user」]
爲什麼添加'()',會產生兩個用戶結果?正則表達式path.match(/ user /);
var path = '/user/tobi'
path.match(/user/);
//result: ["user"]
path.match(/(user)/);
//result: ["user", "user」]
爲什麼添加'()',會產生兩個用戶結果?正則表達式path.match(/ user /);
String#match
返回由匹配字符串組成的數組和由括號中的正則表達式聲明的所有submatches。
因爲捕獲它們的內容是括號在正則表達式中所做的。第零個元素是整個匹配,隨後的每個元素按照其引入的順序對應於「捕獲組」(即括號對)。
演示:
path.match(/(u)s((e)(r))/)
//result: ["user", "u", "er", "e", "r"]
所以 「U」 ,「呃」,「e」,「r」全部是「用戶」的子匹配。它是否正確?沒有副分配比賽,對吧? –
不,子匹配或捕獲只是'()'中的東西。 – Amadan
由於您沒有在正則表達式中指定g,因此match函數的行爲與 regexp.exec(字符串)相同。並根據其文檔,exec方法的結果包含匹配的子字符串和捕獲括號。
請檢查下面的網址
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match
http://www.ultrapico.com/expresso.htm使用這個免費工具來了解任何複雜的正則表達式 – Surender