Ответ 1
Есть две проблемы:
/
не часть выражения. Они являются разделителями, обозначая литерал регулярного выражения. Их нужно удалить, если вы используете RegExp
, иначе они будут соответствовать косой черте буквально.
Во-вторых, обратная косая черта является символом escape в строковых литералах. Чтобы создать литерал \
для выражения, вам нужно избежать его в строке.
Таким образом, эквивалент будет:
new RegExp("rt:([^@]+)@(\\d+)")
В частности, экранирование делает выражение более сложным для записи, если вы хотите использовать RegExp
. Это действительно необходимо, только если вы хотите динамически создавать выражение, то есть, если вы хотите, например, включить текст, хранящийся в переменной. Если у вас есть фиксированное выражение, литерал /.../
легче писать и более кратким.