如何编写一个正则表达式,匹配除左括号和右括号以及它们之间的任何内容之外的所有内容

How do I write a regular expression that matches everything except a left and right parenthesis and anything between them

本文关键字:之间 任何内 何编写 正则表达式 一个      更新时间:2023-09-26

我正在使用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]?'))(.*)

谁能告诉我哪里出错了。

一个更明显(对我来说,无论如何)方法是将 String.replace 方法与正则表达式一起使用:

"John Smith (RET) (1st) SomethingElse".replace(/'([^')]*')/g, '');

但是,这不包括嵌套括号,以防万一。 在这种情况下,这个答案建议使用 XRegExp 来添加在 Perl 兼容的正则表达式中找到的递归参数。

这是你要找的吗:

[^'(')]*

我添加了一个带有输入的插图,该输入在有效匹配时变为绿色,在无效匹配时变为红色

input:focus:invalid {
	background:red;
}
input:focus:valid {
	background:green;
}
<input  class="pattern" pattern = "[^'(')]*" />

[^)](?![^(]*'))

试试这个。请参阅演示。

https://regex101.com/r/wZ0iA3/1

相关文章: