2017-01-24 2 views
0

Я пытаюсь заменить что-то вроде «порядка = высота?», И я знаю, что это можно легко сделать так:Javascript заменить регулярное выражение любой символ

data = 'height' 

x = '?order=' + data 

x.replace('?order=' + data, '') 

Но проблема в том, что знак вопроса может иногда быть амперсанд .. То, что я действительно хочу сделать, это сделать пустой ли амперсанд первый символ или знак вопроса, так в основном ли

?order=height 
&order=height 

можно сделать пустую строку

+0

@ GOTO0, я обновил свой вопрос и забыл упомянуть, что высота должна быть переменная, которая конкатенируется –

+0

Если ваша строка выглядит как 'http: //example.com? order = 1 & foo = 2', когда вы удаляете'? order = 1', вы остаетесь с 'http: //example.com&foo=2 ', что недействительно URL (после «com» ​​должно быть «?», А не «&»). Вы уверены, что это то, что вам нужно? –

+0

Да, я уверен .... –

ответ

1

Так вы можете это сделать. Создать RegExp объект с

"[&?]order=" + match 

и заменить «» с помощью String.prototype.replace

function replace(match, str) { 
 
    regex = new RegExp("[&?]order=" + match,"g") 
 
    return str.replace(regex, "") 
 
} 
 

 
console.log(replace("height", "Yo &order=height Yo")) 
 
console.log(replace("weight", "Yo ?order=weight Yo")) 
 
console.log(replace("age", "Yo ?order=age Yo"))

+0

Что делать, если значение «высота» должно быть переменной? –

+0

, то вы можете изменить его как 'regex =/[&?] Order = [^ \ t] +/g' –

+0

Обновить мой вопрос, я имел в виду что-то еще –

3
x.replace(/[&?]order=height/, '') 

Если данные строки переменной

x.replace(/[&?]order=([^&=]+)/, '') 
+0

@RoryMcCrossan Вам все еще нужно избегать его внутри группы персонажей? Я новичок escape '[.]' И он соответствует '.', а не какой-либо char – Justinas

+0

, а что, если значение 'height' должно быть переменной? –

+0

@DeanChristianArmada Просьба привести пример –

2

Использование регулярных выражений для этого .replace(/[?&]order=height/, '')

[?&] означает любой символ из этого списка.

/ - начальный и конечный разделитель.

Обратите внимание, что рисунок не заключен в виде строки с ' или ".

+0

Что делать, если значение 'height' должно быть переменной? –

+0

Обновить мой вопрос –