我需要使用这些规则来操作字符串:
i. e.
- > i.e.
所以这就是我提出来的:
string = string.replace(/\s\s+/g, ' ');
string = string.replace(/\s\./, '.');
// ??
string = string.replace(/\.+$/, '');
我不知道如何处理规则3,也许所有事情都可以合并在一起。
答案 0 :(得分:0)
您可以将其合并到:
string = string.replace(/\s{2,}/g, ' ').replace(/\s+\./g, '.').
replace(/([!.])\s+([a-z])\b/ig, '$1$2').replace(/^\s+|\s+$/g, '');
\s\s+
更好地使用\s{2,}
([!.])\s+([a-z]\b
将删除DOT后的空格或!
,如果后跟单个字母。^\s+|\s+$
将删除前导或尾随空格答案 1 :(得分:0)
const regex = /(\w\.)\s(\w\.\s)/g;
const str = 'i. e. ';
const subst = '\$1\$2';
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
<强>实施例强>
Input: "i. e. "
Output: "i.e "
Input: "a. g."
Output "a.g. "
这背后的逻辑很简单。 \ w匹配[a-zA-Z0-9]字符,。匹配一个。字面上\ s匹配一个空格(我相信你知道)序列是如此严格(1个字符,1个点,1个空格,后跟1个字符和1个点)使得更容易制作和调整捕获组。