3 回答

TA貢獻1796條經(jīng)驗 獲得超4個贊
您可以使用
console.log("This is a-weird string,right?".match(/[^\W_]+|[^\w\s]|_/g))
正則表達(dá)式匹配:
[^\W_]+
- 一個或多個字母數(shù)字字符|
- 或者[^\w\s]
- 除單詞和空格之外的任何字符|
- 或者_
- 下劃線。
請參閱正則表達(dá)式演示。
一個完全支持 Unicode 的正則表達(dá)式將是
console.log("This is ?-w?ird string,right?".match(/[\p{L}\p{M}\p{N}]+|[\p{P}\p{S}]/gu))
這里,
[\p{L}\p{M}\p{N}]+
- 一個或多個 Unicode 字母、變音符號或數(shù)字|
- 或者[\p{P}\p{S}]
- 單個標(biāo)點符號或符號字符。
請參閱此正則表達(dá)式演示。

TA貢獻1818條經(jīng)驗 獲得超8個贊
這是正則表達(dá)式分割方法。我們可以嘗試按照以下模式進行拆分:
\s+|(?<=\w)(?=\W)|(?<=\W)(?=\w)
代碼片段:
var input = "This is a-weird string,right?";
var parts = input.split(/\s+|(?<=\w)(?=\W)|(?<=\W)(?=\w)/);
console.log(parts);
這是對所使用的正則表達(dá)式模式的解釋,它表示要分割:
\s+ whitespace
| OR
(?<=\w)(?=\W) the boundary between a word character preceding and non word
character following
| OR
(?<=\W)(?=\w) the boundary between a non word character preceding and word
character following

TA貢獻1843條經(jīng)驗 獲得超7個贊
嘗試這樣:
const str = "This is a-weird string,right?";
var arr = str.replace(/(\S)([\,\-])/g, "$1 $2").replace(/([\,\-])(\S)/g, "$1 $2").split(" ");
console.log(arr);
您可以使用您感興趣的每個分隔符進行替換,以便它的每一側(cè)都有一個空格,然后使用它來分割并返回一個數(shù)組。
添加回答
舉報