我有一個像正則表達式來捕捉連續字
"Sony Xperia Z1 Compact"
"Samsung Galaxy Trend Plus"
"Samsung Galaxy Tab 2"
移動設備的名單,我需要一個正則表達式來創建這些字符串標籤以這種方式符合連續字(預期結果):
["Sony", "Sony Xperia", "Sony Xperia Z1", "Sony Xperia Z1 Compact"]
我曾嘗試一些與積極前瞻:
/(?=([a-z]+\s+[a-z]+))[a-z]+/i
我獲得:
model = "Samsung Galaxy Trend Plus"
"Samsung Galaxy Trend Plus"
model.match(/(?=([a-z]+\s+[a-z]+))[a-z]+/i)
["Samsung", "Samsung Galaxy"]
但這個時候你有一個字也不行,所以,添加一個可選的組後:
/(?=([a-z]+\s+[a-z]+))|[a-z]+/i
我獲得:
model = "Samsung"
"Samsung"
model.match(/(?=([a-z]+\s+[a-z]+))|[a-z]+/i)
["Samsung", undefined]
所以,試圖概括:
/(?=([a-z]+\s+[a-z]+))(?=([a-z]+\s+[a-z]+\s+[a-z]+))(?=([a-z]+\s+[a-z]+\s+[a-z]+\s+[a-z]+))[a-z]+/i
我得到
"Samsung Galaxy Trend Plus"
model.match(/(?=([a-z]+\s+[a-z]+))(?=([a-z]+\s+[a-z]+\s+[a-z]+))(?=([a-z]+\s+[a-z]+\s+[a-z]+\s+[a-z]+))[a-z]+/i)
["Samsung", "Samsung Galaxy", "Samsung Galaxy Trend", "Samsung Galaxy Trend Plus"]
而且應該有高達ñ的話,如何讓這個普通的正則表達式(在ñ字變量自由度)? 另外,如何擺脫undefined
?正如here所解釋的那樣,我應該使用一個非捕獲組,因此這會阻止我以我正在做的方式捕獲連續的單詞。
的解決方案也成爲一個reg EXP? – epascarello
是的,它必須是一個正則表達式。 – loretoparisi
我不認爲'Sony Xperia Compact'是由連續的單詞形成的。 [這個解決方案怎麼樣](http://jsfiddle.net/e6w0mp31/)? –