Подтвердить что ты не робот

Удалить скобки из строки в Javascript

  x = x.replace(/[{()}]/g, '');
  y = y.replace(/[{()}]/g, '');

  x = x.replace(/[\[\]']+/g, '');
  y = y.replace(/[\[\]']+/g, '');

В порядке я понимаю, что первый блок удаляет фигурные скобки, а второй блок кода удаляет обычные скобки. Я хочу удалить скобки сейчас.. может кто-нибудь показать мне, как?

Я получил вышеприведенный код, просто используя Google. Но я не понимаю, "как" они придумали это, может кто-нибудь объяснить? спасибо

4b9b3361

Ответ 1

Первое регулярное выражение

x = x.replace(/[{()}]/g, '');
y = y.replace(/[{()}]/g, '');

В вашем первом регулярном выражении /[{()}]/g внешние квадратные скобки [] создают класс символов, он будет соответствовать одному из символов, указанных внутри него. В этом случае символы { ( ) }.

Помимо /regexp/ у вас есть g (глобальный) модификатор modifier, означающий, что все ваше регулярное выражение будет совпадать столько раз, сколько может, и оно не будет просто соответствовать первому совпадению.

Второе регулярное выражение

x = x.replace(/[\[\]']+/g, '');
y = y.replace(/[\[\]']+/g, '');

Во втором регулярном выражении /[\[\]']+/g внешние квадратные скобки [] создают класс символов, он будет соответствовать одному из символов, указанных внутри него. В этом случае символы [ ] '.

Обратите внимание, что квадратные скобки внутри [класса символов] отображаются как \[ \].

После того как вы укажете квантификатор + quantifier, он сделает предыдущее правило совпадающим one or more раз подряд. Обратите внимание, что это избыточно, даже если это работает, это не совсем то, что вы хотите.

Помимо /regularexpression/ у вас есть g (глобальный) модификатор modifier, означающий, что все ваше регулярное выражение будет совпадать столько раз, сколько может, и оно не будет просто соответствовать первому совпадению.


Предлагаемое решение

run1.onclick = function() {
  //removes "(" and ")"
  output1.innerHTML = input1.value.replace(/[()]/g, ''); 
}

run2.onclick = function() {
  //removes (){}[]
  output2.innerHTML = input2.value.replace(/[\])}[{(]/g, ''); 
}
<p>Remove ()</p>
<input id="input1" type="text" value="(123) 1234-1234">
<input id="run1" type="button" value="run">
<span id="output1"></span>

<hr>

<p>Remove ()[]{}</p>
<input id="input2" type="text" value="Hello (this) is [] a {{test}}!">
<input id="run2" type="button" value="run">
<span id="output2"></span>