Javascript 忽略regex lookahead中的嵌套组

Javascript 忽略regex lookahead中的嵌套组,javascript,regex,safari,mobile-safari,Javascript,Regex,Safari,Mobile Safari,采取以下行动: More writing. More writing? More writing! 我想把字符串分成几个句子,每个句子后面都有空格 因此,我期望的结果是: ["More writing.", "More writing? ", "More writing!"] 在发现Safari还没有支持Regex的lookbehind检查之后,下面是我对lookbehind的尝试 首先,我反转字符串,然后使用以下命令拆

采取以下行动:

More writing. More writing?    More writing!
我想把字符串分成几个句子,每个句子后面都有空格

因此,我期望的结果是:

["More writing.", "More writing?    ", "More writing!"]
在发现Safari还没有支持Regex的lookbehind检查之后,下面是我对lookbehind的尝试

首先,我反转字符串,然后使用以下命令拆分:

/(?=\s+!|\s+\?|\s+(?:\.{3}|\.))/g
这是可行的,但它会多次计算多个空间,从而得出结果:

 ["More writing. More writing? ", " ", " ", " ", "More writing!"]
如您所见,我现在需要手动折叠空格

有没有一种方法可以将空格作为一个单独的组与前面的句子进行匹配

更一般地说:

有没有一种支持Safari的方式来实现这一点


提前感谢。

我认为只匹配非句子结束符、句子结束符和0或更多空格会更容易:

const str='更多的写作。更多的写作?更多的写作;
console.log(
str.match(/[^.!?]+[.!?]*/g)

);我认为只匹配非句子终止符,然后是句子终止符,然后是0或更多空格会更容易:

const str='更多的写作。更多的写作?更多的写作;
console.log(
str.match(/[^.!?]+[.!?]*/g)

);您可以至少匹配一个单词,后跟一个
而不是拆分
并匹配尾随空格字符

\w+(?:\s+\w+)*[.?!]\s*
  • \w+
    匹配1+个单词字符
  • (?:\s+\w+*
    可以选择重复1+空格字符和1+单词字符
  • [.?!]\s*
    匹配
    中的一个
    和可选的尾随空格字符

const s=“更多的写作。更多的写作?更多的写作!”;

日志(s.match(/\w+(?:\s+\w+*[.?!]\s*/g))您可以至少匹配一个单词,后跟一个
而不是拆分
并匹配尾随空格字符

\w+(?:\s+\w+)*[.?!]\s*
  • \w+
    匹配1+个单词字符
  • (?:\s+\w+*
    可以选择重复1+空格字符和1+单词字符
  • [.?!]\s*
    匹配
    中的一个
    和可选的尾随空格字符

const s=“更多的写作。更多的写作?更多的写作!”;

日志(s.match(/\w+(?:\s+\w+*[.?!]\s*/g))可能匹配它们
\w+(?:\w+*[.?!]\s*
可能匹配它们
\w+(?:\w+*[.?!]\s*
打得好!谢谢是的,我试图让一个非捕获组工作,但不能。打得好!谢谢是的,我试图让一个非捕获组工作,但没能。