我正在使用javascript,我正在尝试编写一个正则表达式,除了左右括号和它们之间的任何内容之外的任何内容。在做了一点研究之后,我在Stackoverflow上找到了一个类似的例子。在此特定示例中,以下正则表达式用于匹配除999之外的任何三位数。
[(?!999)(\d{3})][1]
此正则表达式按预期工作,匹配555或444或333但不匹配999。
我希望我的正则表达式匹配如下:
John Smith => John Smith
John Smith (RET) => John Smith
Mr. John Smith's (RET) (1st) => Mr. John Smith's
John William Smith (RET) => John William Smith
John => John
这是我到目前为止所做的,但它不起作用:
(?!\([A-Za-z]?\))(.*)
有人可以告诉我哪里出错了。
答案 0 :(得分:2)
更明显(对我而言)方法是将String.replace方法与Regex一起使用:
"John Smith (RET) (1st) SomethingElse".replace(/\([^\)]*\)/g, '');
但是,如果存在问题,则不包括嵌套括号。在这种情况下,this answer建议使用XRegExp添加在Perl兼容的正则表达式中找到的递归参数。
答案 1 :(得分:1)
这是你正在寻找的东西:
[^\(\)]*
我添加了一个插图,其输入变为带有效匹配的绿色,红色带有无效匹配
input:focus:invalid {
background:red;
}
input:focus:valid {
background:green;
}

<input class="pattern" pattern = "[^\(\)]*" />
&#13;
答案 2 :(得分:0)