4

我总是对正则表达式完全不知所措,所以我希望这里有人可以提供帮助。

Joomla 使用这个正则表达式来验证 ini 文件的行:

/^(|(\[[^\]]*\])|([A-Z][A-Z0-9_\-]*\s*=(\s*(("[^"]*")|(_QQ_)))+))\s*(;.*)?$/

这些行具有这种格式

JLIB_LOGIN_AUTHENTICATE="Username and password do not match or you do not have an account yet."

显然"不能在值部分中被允许,但\"可以。目前,这与上述正则表达式匹配。我可以看到它是如何匹配的,但我无法将正则表达式修改为不匹配\"。我尝试添加|(\Q\"\E)到各个地方,但没有运气。

4

2 回答 2

6

改变这个:

"[^"]*"

对此:

"(\\"|[^"])*"

在线查看它:ideone

于 2012-07-24T23:41:21.803 回答
3

替换[^"]([^"]|(\\"))

于 2012-07-24T23:41:53.283 回答