在Javascript中从字符串中删除括号

时间:2012-06-01 03:55:30

标签: javascript

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

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

好吧,我知道第一个块删除了大括号,第二个代码块删除了常规括号。我想现在删除括号..有人可以告诉我怎么做?

我通过谷歌搜索获得了上述代码..但我不明白他们如何提出这个问题,有人可以解释一下吗?感谢

1 个答案:

答案 0 :(得分:62)

First Regex

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

在您的第一个正则表达式/[{()}]/g中,外方括号[]生成字符类,它将匹配其中指定的字符之一。在这种情况下,字符{ ( ) }

/regexp/之外,您拥有g(全局)修饰符,这意味着您的整个正则表达式将尽可能多地匹配,并且它不仅仅是进入第一场比赛。

第二个正则表达式

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

在你的第二个正则表达式/[\[\]']+/g中,外方括号[]生成一个字符类,它将匹配其中指定的一个字符。在这种情况下,字符[ ] '

请注意,方括号显示为 [字符类] 内的\[ \]

之后您指定了+ 量词,它使前面的规则连续匹配one or more次。请注意,这是多余的,即使它有效,这也不是你想要的。

/regularexpression/之外,您拥有g(全局)修饰符,这意味着您的整个正则表达式将尽可能多地匹配,并且它不仅仅是进入第一场比赛。


建议的解决方案

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>