首页 > 解决方案 > javascript equivalent for python regex yes-pattern no-pattern

问题描述

In python there is a syntax for - if a capture group exists then x else y e.g.

>>> pat = re.compile('(?:(a)|(c))b(?(1)a|c)') # should only match 'aba' or 'cbc'
>>> pat.match('abc')
None
>>> pat.match('aba')
<re.Match object; span=(0, 3), match='aba'>
>>> pat.match('cba')
None
>>> pat.match('cbc')
<re.Match object; span=(0, 3), match='cbc'>

How might one achieve a similar expression in javascript.

Leading to a general approach for converting the python regex syntax to javascript

(?(id/name)yes-pattern|no-pattern)

I've tried a few ideas but haven't found an approach that's worked

标签: javascriptpython

解决方案


For this particular case, you don't need if/else syntax, you can backreference a single capture group:

const pattern = /([ac])b\1/;
console.log(
  pattern.test('abc'),
  pattern.test('aba'),
  pattern.test('cbc'),
);


推荐阅读