Javascript Don';如果存在';s a";句号;介于;字;“和”&引用;

Javascript Don';如果存在';s a";句号;介于;字;“和”&引用;,javascript,regex,Javascript,Regex,我想匹配括号中的位;以“也许”开头,以问号结尾的句子 我认为这个正则表达式可以工作:也许。*(?!=\)\? 然而,我得到的是: Perhaps he hadn't. [Perhaps he didn't?] Perhaps he didn't. [Perhaps he hadn't?] 为什么会这样?如何修复它 您可以像这样使用否定字符类: [Perhaps he hadn't. Perhaps he didn't?] Perhaps he didn't. [Perhaps he h

我想匹配括号中的位;以“也许”开头,以问号结尾的句子

我认为这个正则表达式可以工作:
也许。*(?!=\)\?

然而,我得到的是:

Perhaps he hadn't. [Perhaps he didn't?]

Perhaps he didn't.

[Perhaps he hadn't?]
为什么会这样?如何修复它


您可以像这样使用否定字符类:

[Perhaps he hadn't. Perhaps he didn't?]

Perhaps he didn't.

[Perhaps he hadn't?]

要匹配完整的单词,请使用:

/Perhaps[^.?]*\?/g
为避免跨行匹配,请使用:

/\bPerhaps[^.?]*\?/
这里的
[^.?]
将匹配除
之外的任何字符

关于您的正则表达式:

(?!=\)
实际上是错误的负前瞻语法。如果前面有一个文本
=
,则表示不匹配

即使您将其更正为使用
也许。*(?!\)\?
它仍然不起作用,因为
(?!\)
将仅应用于匹配
,并且始终会成功

虽然不推荐,但如果您真的想使用负前瞻,请使用:

/\bPerhaps[^.?\r\n]*\?/

谢谢但是,为什么负面展望不起作用呢?不要使用
/也许(?:(?!\)*\?/
,如果需要避免跨行匹配,请使用
/也许[^?\n\r]*\?/
。不需要排除/否定字符类后的
*?
量词。提到后者并思考标点符号,除了
(为了匹配一行,他可能没有?也许他没有?以一种非贪婪的方式)。。。甚至可能
。因此,正则表达式将至少读取
/\bPerhaps[^.?]*\?/g
。我并不是真的建议使用
/也许(?:(!\)*\?/
。只是在OP尝试的regexGood point@PeterSeliger答案中指出了错误,并更新了您的建议
/Perhaps(?:(?!\.).)*\?/