JavaScript-正则表达式将字符串拆分为数组,允许撇号

JavaScript-正则表达式将字符串拆分为数组,允许撇号,javascript,regex,replace,match,Javascript,Regex,Replace,Match,我有一些Express中间件,它处理字符串(用户通过文本字段输入的句子),并对其进行分析。为此,我需要将单词和标点符号分解成一个数组 示例字符串为: "It's familiar. Not much has really changed, which is surprising, but it's nice to come back to where I was as a kid." 作为过程的一部分,我用替换新行,并将字符串拆分为一个数组 res.locals.storyArray =

我有一些Express中间件,它处理字符串(用户通过文本字段输入的句子),并对其进行分析。为此,我需要将单词和标点符号分解成一个数组

示例字符串为:

"It's familiar. Not much has really changed, which is surprising, but 
it's nice to come back to where I was as a kid."
作为过程的一部分,我用

替换新行,并将字符串拆分为一个数组

res.locals.storyArray = 
res.locals.story.storyText.replace(/(?:\r\n|\r|\n)/g, ' <br/>' ).split(" ");
事实上,我很惊讶逗号和句号似乎被正确分割,因为我只在空白处分割,但我正试图使我的数组:

[ [ '"', 'quote' ],
[ 'It's, 'Personal pronoun' ],
[ 'familiar', 'Adjective' ],
[ '.', 'Sent-final punct' ],
.....
]

您可以使用
String.raw
来确保字符串与包含的标点符号保持正确的接触

我唯一的问题是保留“.”标点符号。为此,我在拆分
之前添加了一个新的replace函数。replace(/\./g,“.”
——这也适用于所有逗号

let strArray = myStr.replace(/\./g, " .")
  .replace(/\,/g, " ,")
  .replace(/\"/g, String.raw` " `)
  .split(/\s/g)
  .filter(_=>_);
让myStr=String.raw`“这很熟悉。实际变化不大,这很令人惊讶,但是
回到我小时候的地方真是太好了;
让strArray=myStr.替换(/\./g,“.”)
.替换(/\,/g,“,”)
.replace(/\“/g,String.raw``)
.split(/\s/g)
.filter(=>;
让HTML=myStr.replace(/(?:\r\n |\r |\n)/g,“
”; console.log(myStr);
控制台日志(strArray)非常感谢,看起来不错。
是我试图在页面上显示内容时保留用户在文本输入中输入的换行符。我下班后会将你的解决方案输入我的应用程序,但我很确定我会将你的答案标记为正确答案。再次感谢!嗨,再次谢谢你。我刚刚测试过它,但仍然存在由语音标记引起的问题。我给出的示例字符串显示了
“它很熟悉”
,但您的示例字符串是“它很熟悉”(这实际上是我没有讨论过的另一个有效案例)。然而,当我运行您的解决方案时,返回的数组是
['“它很熟悉”,“很熟悉”,“不熟悉”,“很多”,但我想转到
[”“,”它是“,”熟悉“,”不是“,”很多“,
,也就是说,语音标记
(但它也可能是单引号,我猜你也有)应该是一个数组项。哇,太完美了。非常感谢,我永远不会到那里!
let strArray = myStr.replace(/\./g, " .")
  .replace(/\,/g, " ,")
  .replace(/\"/g, String.raw` " `)
  .split(/\s/g)
  .filter(_=>_);