Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript正则表达式在句点后添加换行符_Javascript_Regex - Fatal编程技术网

javascript正则表达式在句点后添加换行符

javascript正则表达式在句点后添加换行符,javascript,regex,Javascript,Regex,我试图在javascript中使用正则表达式,在格式化为html变量的json数据的每个句子后添加一个换行符 仅仅根据句点来定位它是不起作用的——json数据中似乎有额外的字符,或者其他导致每3或4个单词换行的东西 所以我试着用大写字母来寻找一个具有前瞻性的时期。但这是在每个大写字母之前加上换行符,而不仅仅是在句号之后 我对正则表达式非常陌生,所以任何帮助都会非常有用 现在,后跟大写字母的期间的搜索参数是:/(?=[a-Z])/g javascript是:description.replace(

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

仅仅根据句点来定位它是不起作用的——json数据中似乎有额外的字符,或者其他导致每3或4个单词换行的东西

所以我试着用大写字母来寻找一个具有前瞻性的时期。但这是在每个大写字母之前加上换行符,而不仅仅是在句号之后

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

现在,后跟大写字母的期间的搜索参数是:
/(?=[a-Z])/g

javascript是:
description.replace(/。(?=[A-Z])/g,

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

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

句点
是匹配任何单个字符的通配符。要匹配实际的句点,必须在正则表达式中转义它。
因此您的行

description.replace(/.(?=[A-Z])/g,

变成

description.replace(/\.(?=[A-Z])/g,


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

您需要像这样转义
,因此它与任何字符都不匹配

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

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

  • 正则表达式:

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

    $1\n
    

  • 哦,是的,谢谢你,这就很好地解释了。。。这是正确的,但现在我用换行符替换句号和大写字母。您知道replace参数应该是什么,以便它包含匹配的项吗?因此,replace术语应该是句点+换行符+大写字母?我试过了\1。谢谢所有人的帮助--这就得到了:description.replace(/(\.(\s+)/g,\$1

    );在上面的示例中,您不需要(\s+)周围的参数,只需要(\.\s+),而且您不需要\$1和
    之间的空格。这将进行最后的替换调用:description.replace(/(\.\s+)/g,\$1

    );这里有一个正则表达式教程: