正则表达式选择在另一个选择

时间:2017-09-06 06:26:23

标签: javascript regex regex-greedy

所以我有一个这样的字符串:

@array = ('a', 1, 2, 3, 4, 'b', 6, 7, 8);

%hash = ('a' => [1,2,3,4], 'b' => [6,7,8]);

我可以选择三个引号:

var a = " 'asdf'+'asdf'+'we' + 1";

如何使用正则表达式在字符串中选择单引号(')的开头? 还有一个单独的正则表达式来选择单引号的结尾(')?正则表达式可以实现吗?我将用<<。

替换引号的开头

最终字符串看起来像

'([^']*)'

1 个答案:

答案 0 :(得分: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 1regex demo 2