Javascript 为什么下面的正则表达式要删除单引号中的边界字符?
此代码将直接单引号转换为卷曲单引号:Javascript 为什么下面的正则表达式要删除单引号中的边界字符?,javascript,regex,Javascript,Regex,此代码将直接单引号转换为卷曲单引号: var result = 'This \'is an\' example'.replace(/(?<!\w)\'\S(.*?)\S\'(?!\w)/g, '‘$1’') alert(result) var result='This'是一个\'example'。替换(/(?)? 我认为结果是: 这是一个很好的例子 但结果是: 这是一个很好的例子 我不确定为什么引号内的边界字符被删除 这是为什么?如何解决 您正在匹
var result = 'This \'is an\' example'.replace(/(?<!\w)\'\S(.*?)\S\'(?!\w)/g, '‘$1’')
alert(result)
var result='This'是一个\'example'。替换(/(?)?
我认为结果是:
这是一个很好的例子
但结果是:
这是一个很好的例子
我不确定为什么引号内的边界字符被删除
这是为什么?如何解决
您正在匹配两个\S
部分,但未捕获它们:
.replace(/(?<!\w)\'\S(.*?)\S\'(?!\w)/g
// ^^ ^^
\S
中的字符不在(.*)
捕获组中,因此它们不包括在$1
替换中
将要替换的所有内容放入捕获组:
var result='这是一个\'示例'
.替换(
/(?很容易修复…非常感谢您的回答和建议。
'‘$1’'
// ^^