gpt4 book ai didi

Javascript 正则表达式用于漂亮地格式化用户文本

转载 作者:行者123 更新时间:2023-11-28 02:49:40 24 4
gpt4 key购买 nike

我在这里进行一项研究,旨在为您找到格式化用户短信的最佳方式。

我想要实现的目标的示例:

1) 用户发送此消息:

   Doctor,
I would like to have
an appointment tomorrow morning.Please,call me!

2)我的应用程序格式化此文本输出:

Doctor, I would like to have an appointment tomorrow morning. Please, call me!

请注意:

  • 尾随空格和前导空格必须消失(例如使用 $.trim() )
  • 两个单词之间的多余空格必须替换为一个空格
  • 新行、换行、制表符、<br>必须替换为一个空格
  • 点和逗号必须与下一个单词分开(morning.Please,call->morning.Please,call)

这是我到目前为止所得到的东西:

 text.replace(/<(.|\n\r)*?>/g, '')
.replace(/\s/g,' ')
.replace(/<br>/g,' ')
.replace(/ +/g,' ');

最好将所有表达式合并为一种模式。有没有更短的方法来做到这一点?

最佳答案

在两个正则表达式中 ( jsFiddle demo ):

text.replace(/\s+|([.,])(?=\S)/g, '$1 ').replace(/^\s|\s$/g, '')

分解它,它匹配:

  • 一个或多个空白字符(换行符、制表符、空格)
  • 句点或逗号后跟非空白字符(我们使用 (?= 正向前瞻)

并将其替换为单个空格 (ASCII 32),将任何匹配的句点或逗号保留为 $1。然后,在第二个正则表达式中删除任何前导或尾随空白字符。第二个正则表达式是必要的,因为向原始字符串添加空格的正则表达式必须在替换子字符串中包含空格,而我们希望开头或结尾没有空格。

如果<br>重要的是,您最好在使用上面的正则表达式对( .replace(/<br>/g, ' ') )之前将其替换为空格字符,但如果您确实想在同一个正则表达式中这样做:( jsFiddle demo )

text.replace(/(?:<br>|\s)+|([.,])(?=\S)(?!<br>)/g, '$1 ').replace(/^\s|\s$/g, '')

关于Javascript 正则表达式用于漂亮地格式化用户文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4061526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com