Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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 Regex首字母缩略词匹配和拼写更正_Javascript_Regex - Fatal编程技术网

Javascript Regex首字母缩略词匹配和拼写更正

Javascript Regex首字母缩略词匹配和拼写更正,javascript,regex,Javascript,Regex,我正在尝试修复一些拼写错误,其中一个常见错误是句子之间缺少空格:“这是一个句子。这里是另一个句子。”我想匹配并添加一个空格,因此我编写了以下正则表达式: var re = /\.(?=[A-Z]|\()/g; var res = str.replace(re, '. '); 这涵盖了挤在一起的句子,以及另一个涉及括号的打字错误,这对这个问题并不重要 问题是出现了一些首字母缩略词,它们也被匹配和(错误地)替换。示例:“美国是一个国家”替换为“美国是一个国家”。我试图阻止这些首字母缩略词被匹配。我

我正在尝试修复一些拼写错误,其中一个常见错误是句子之间缺少空格:
“这是一个句子。这里是另一个句子。”
我想匹配并添加一个空格,因此我编写了以下正则表达式:

var re = /\.(?=[A-Z]|\()/g;
var res = str.replace(re, '. ');
这涵盖了挤在一起的句子,以及另一个涉及括号的打字错误,这对这个问题并不重要

问题是出现了一些首字母缩略词,它们也被匹配和(错误地)替换。示例:“美国是一个国家”替换为“美国是一个国家”。我试图阻止这些首字母缩略词被匹配。我想也许我想要的是“回头看”,但javascript不支持这一点

你知道如何解决这个问题吗?

这似乎有效:

var str = "A sentance.Another sentance with an A.C.R.O.N.Y.M.Yet another sentence."
var re = /\.(?=[A-Z][^.]|\()/g; 
var res = str.replace(re, '. ');
res // => "A sentance. Another sentance with an A.C.R.O.N.Y.M. Yet another sentence."
你可以试试:

\.(?=[A-Z]|\()(?![A-Z]\.)

这确保了“.”后面的继续字符不包括大写字母和“.”

regex不是为语言上下文分析而设计的。您需要为
RegExp
指定一个唯一的分隔符!“后退一步”并在
之前匹配一个字符,然后在替换时将其放回:
var res=str.replace(/([a-z])\。(?=[a-z]\()/g.replace(re,$1.);
。当然,这只有在“句子”中才有效始终以小写字母结尾。有些情况下,你会发现,由于首字母缩略词中句点的定义,不适用于正则表达式。你真的需要一些定界符来捕捉这类内容。这有点奇怪,因为你用的是美语句子,这很简单。。.我该怎么说呢?…从句法上说是多样的。