我相信這是真的很容易,但我怎麼搭配如何在先行表達式匹配線和空白的開始
- 比賽無論是線上還是空白
- 比賽開始AZ
- 比賽行末或空白
我只想返回產品編號。 2所以以下字符串
"one 1.ignore two 2ignore ignore3 three"
表達將返回
["one","two","three"]
感謝
我相信這是真的很容易,但我怎麼搭配如何在先行表達式匹配線和空白的開始
我只想返回產品編號。 2所以以下字符串
"one 1.ignore two 2ignore ignore3 three"
表達將返回
["one","two","three"]
感謝
使用此代碼:
var str = 'one 1.ignore two 2ignore ignore3 three';
str = str.replace(/\s(?=[a-z])/ig, function(text, p1) {
return p1 ? p1 : text;
});
var arr = str.match(/([a-z]+)(?=\s|$)/ig);
您需要回顧後的正則表達式匹配這些項目,這在javascript中不受支持。要麼你做手工迭代和提取匹配的組(這表現在@ Some1.Kill.The.DJ),或者你會分裂,而不是匹配的字符串:
str.split(/\s+(?:\S*?(?![a-z])\S+\s+)*/);
這個表達式不匹配所有空格結合包含至少一個不是[a-z]
的字符。但是,這個正則表達式很複雜,不容易維護。它也有時會產生空字符串。更好的是,做類似
str.split(/\s+/).filter(RegExp.prototype.test.bind(/^[a-z]+$/));
對於項目#1,您需要lookbehind,這在javascript中不受支持。 – Bergi
這似乎是這樣一個直截了當的要求。但有一點要說。也許有人可以找到解決這個問題的辦法。 – Bruno