Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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,此代码将直接单引号转换为卷曲单引号: var result = 'This \'is an\' example'.replace(/(?<!\w)\'\S(.*?)\S\'(?!\w)/g, '&lsquo;$1&rsquo;') alert(result) var result='This'是一个\'example'。替换(/(?)? 我认为结果是: 这是一个很好的例子 但结果是: 这是一个很好的例子 我不确定为什么引号内的边界字符被删除 这是为什么?如何解决 您正在匹

此代码将直接单引号转换为卷曲单引号:

var result = 'This \'is an\' example'.replace(/(?<!\w)\'\S(.*?)\S\'(?!\w)/g, '&lsquo;$1&rsquo;')
alert(result)
var result='This'是一个\'example'。替换(/(?)?
我认为结果是:

这是一个很好的例子

但结果是:

这是一个很好的例子

我不确定为什么引号内的边界字符被删除

这是为什么?如何解决

您正在匹配两个
\S
部分,但未捕获它们:

.replace(/(?<!\w)\'\S(.*?)\S\'(?!\w)/g
//                 ^^     ^^
\S
中的字符不在
(.*)
捕获组中,因此它们不包括在
$1
替换中

将要替换的所有内容放入捕获组:

var result='这是一个\'示例'
.替换(

/(?很容易修复…非常感谢您的回答和建议。
'&lsquo;$1&rsquo;'
//      ^^