【问题标题】:javascript regex to add line break after periodjavascript正则表达式在句点后添加换行符
【发布时间】:2011-06-20 18:24:21
【问题描述】:

我试图在 javascript 中使用正则表达式在每个句子后添加一个换行符到被格式化为 html 变量的 json 数据。

仅根据句号定位它不起作用 - json 数据中似乎有多余的字符或其他导致每 3 或 4 个单词换行的内容。

所以我试图搜索一个带有大写字母前瞻的句点。但这是在每个大写字母之前添加换行符,而不仅仅是句号之后的换行符。

我对正则表达式很陌生,所以任何帮助都会非常有帮助!

现在大写字母后的句号的搜索参数是:/.(?=[A-Z])/g

javascript 是:description.replace(/.(?=[A-Z])/g, '<br /><br />');

【问题讨论】:

标签: javascript regex


【解决方案1】:

几个问题。 RegExp 中的第一个 . 表示“任何字符”。 其次,我认为您不需要?=。我想你可能正在寻找这样的东西:

 /\.(\s+)[A-Z]/g

【讨论】:

  • 哦,是的,谢谢你——这绝对解释了它......这是正确找到它但现在我用换行符替换句点和大写字母。你知道替换参数应该是什么,以便它包含匹配的项目 - 所以替换术语将是句点 + 换行符 + 大写字母?我试过\1。
  • 感谢大家的帮助——明白了:description.replace(/(\.(\s+))/g, '\$1

    ');
  • 在上面的示例中,您不需要 (\s+) 周围的括号,只需 (\.\s+),另外,您不需要在 \$1 和
    之间有空格。这使得最后的替换调用:description.replace(/(\.\s+)/g,"\$1

    ");
【解决方案2】:

句点. 是匹配任何单个字符的通配符。要匹配实际期间,您必须在正则表达式 \. 中对其进行转义,以便您的行

description.replace(/.(?=[A-Z])/g, '<br /><br />');

变成

description.replace(/\.(?=[A-Z])/g, '<br /><br />');

我没有对此进行任何测试来检查正则表达式的其余部分。

【讨论】:

    【解决方案3】:

    您需要像这样 `.' 转义 .。所以它不匹配任何字符。

    description.replace(/\.(?=[A-Z])/g, '<br /><br />');
    

    【讨论】:

      【解决方案4】:

      对于更复杂的句子结构,包括引号、括号等,这是我想出的解决方案(gist):

      1. 正则表达式:

        ([^\dA-Z][\.!?][\)\]'"”’]* +)
        
      2. 替换字符串:

        $1\n
        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-04-24
        • 2016-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-21
        相关资源
        最近更新 更多