我有一個像下面這樣的字串
19990101 - John DoeLorem ipsum dolor sit amet 19990102 - Elton Johnconsectetur adipiscing elit
我怎樣才能寫一個正則運算式來給我這兩個單獨的字串
19990101 - John DoeLorem ipsum dolor sit amet
19990102 - Elton Johnconsectetur adipiscing elit
我寫的正則運算式適用于這個
/\d -/gm
圖片
但我不知道如何將字母也包括在內
圖片2
uj5u.com熱心網友回復:
對于 OP 的用例,一個基于正則運算式的splitwith ... str.split(/(?<=\w)\s (?=\d)/)... 已經應該這樣做了。
正則運算式使用lookarounds,這里嘗試匹配任何空格(序列)/ \s ,它既(?<= ... )由單詞/引導/\w又跟隨/(?= ... )數字/\d字符。
console.log(
'19990101 - John DoeLorem ipsum dolor sit amet 19990102 - Elton Johnconsectetur adipiscing elit 19990101 - John DoeLorem ipsum dolor sit amet 19990102 - Elton Johnconsectetur adipiscing elit'
.split(/(?<=\w)\s (?=\d)/)
);
uj5u.com熱心網友回復:
您可以使用
const text = '19990101 - John DoeLorem ipsum dolor sit amet 19990102 - Elton Johnconsectetur adipiscing elit';
console.log(text.match(/\d \s -[A-Za-z0-9\s]*[A-Za-z]/g))
console.log(text.split(/(?!^)\s (?=\d \s -)/))
該text.match(/\d \s -[A-Za-z0-9\s]*[A-Za-z]/g)方法是在模式之后提取字母數字/空白字符\d \s -。詳情:
\d- 一位或多位數字\s- 一個或多個空格-- 一個連字符[A-Za-z0-9\s]*- 零個或多個字母數字或空白字符[A-Za-z]- 一封信
在text.split(/(?!^)\s (?=\d \s -)/)分裂的做法打破了串前一個或多個數字的一個或多個空格 一個或多個空格 -:
(?!^)- 不在字串的開頭\s- 一個或多個空格(?=\d \s -)- 與緊跟一個或多個數字 一個或多個空格 的位置匹配的正向前瞻-。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/358990.html
標籤:javascript 正则表达式
