正则表达式在Java中有效,但在Javascript中无效



我有一个像

这样的正则表达式
f[uW&&[^s,]][cW&&[^s,]]?k(?!(uoka|uyama|ushima|nowledge))

找到一些f个单词,但它在Java中工作,但它不能在Javascript中找到f个单词,这个表达式在Java和Javascript中有什么不同?以及如何解决它,任何人都可以给我一个想法,谢谢。

我试着改变"]]"到"]",似乎它在Javascript中工作,但我不知道为什么,括号不是以这种方式配对

JavaScript不支持类交集操作符&&

因此,JavaScript在解析[uW&&[^s,]]时不会以这种方式处理&&。Java将其解释为:

匹配u或非字母数字字符,但不包括空格和逗号。

您可以通过对"但不是…"使用反向查找来转换它。部分:(?![s,])[uW]。同样的解决方法也适用于[cW&&[^s,]]

这就导致了这个正则表达式:

f(?![s,])[uW](?![s,])[cW]?k(?!(uoka|uyama|ushima|nowledge))

最新更新