Javascript 中的正则表达式擦除空格

Regular Expressions in Javascript erasing spaces

JAVASCRIPT 正则表达式

此代码搜索单引号并将其替换为双引号。它不会替换作为单词一部分的单引号(即不要)

function testRegExp(str)
{
    var matchedStr = str.replace(/\W'|'\W/gi, '"');
    return matchedStr;
}
console.log(testRegExp("I'm in a 'blue house with a cat' and I don't care!"))

RESULT --->我在"blue house with a cat"而且我不在乎!

请注意,没有 space 双引号替换单引号。为什么space在这句话前后都消失了?谢谢

/\W'|'\W/gi

您正在替换任何后跟单引号的非单词字符 (\W') 或 (|) 任何后跟非单词字符 ('\W) 的单引号没有任何 spaces 的双引号。

空格算作非单词字符,因此您基本上是用不带空格的双引号替换 space 和单引号。

这是您的问题的解决方案:

function testRegExp(str)
{
    var matchedStr = str.replace(/\W'/g, ' "').replace(/'\W/g, '" ');
    return matchedStr;
}

console.log(testRegExp("I'm in a 'blue house with a cat' and I don't care!"))