所以我有这样一个字符串:
var a = " 'asdf'+'asdf'+'we' + 1";
我可以选择三个引号:
'([^']*)'
如何使用正则表达式选择字符串中单引号 (') 的开头? 还有一个单独的正则表达式来选择单引号(')的结尾?正则表达式可能吗?我将用 <<.
替换引号的开头最终的字符串看起来像
" <<asdf'+<<asdf'+<<we' + 1"
最佳答案
当你只需要替换模式的某些部分时,在你需要保留的部分周围使用捕获组,并且只匹配(并消耗)你需要删除的部分。
var a = " 'asdf'+'asdf'+'we' + 1";
console.log(
a.replace(/'([^']*')/g, '<<$1')
);
// And, to replace both ' in one go (notice the ) shift to the left):
console.log(
a.replace(/'([^']*)'/g, '<<$1>>')
);
这里,
-
'
- 匹配和消费'
-
([^']*')
- 匹配并捕获到第 1 组零个或多个除'
以外的字符(带[^']*
)然后是'
.$1
替换模式中的占位符是找到有效匹配项后第 1 组中存储的内容的占位符。 -
([^']*)
- 只捕获除'
以外的任何 0+ 个字符进入第1组,最后'
被匹配和消耗,将在$1
中丢失占位符内容。
另请参阅 regex demo 1和 regex demo 2 .
关于javascript - 另一个选择中的正则表达式选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46068223/