在正则表达式中转义反斜杠[\\]的正确方法?

出于好奇,我试图找出哪一种是在PHP正则表达式模式中使用反斜杠的正确方法:

$pattern = "/^[\\\]{1,}$/";

$string = '\\';

// ----- RETURNS A MATCH -----

$pattern = "/^[\\\\]{1,}$/";

$string = '\\';

// ----- ALSO RETURNS A MATCH -----

根据下面的文章,4应该是正确的方法,但令我困惑的是两个测试都返回了一个匹配项。如果两者都正确,那么4是首选方式吗?

回答:

事实是,您正在使用字符类,[]因此无论嵌入多少文字反斜杠都无关紧要,它将被视为单个反斜杠。

例如以下两个正则表达式:

/[a]/

/[aa]/

就正则表达式引擎而言,其所有意图和目的都是相同的。字符类采用一个字符列表,然后将它们“折叠”下来以匹配单个字符,并遵循“对于正在考虑的当前字符,是否是[]?中列出的任何字符”这一行。如果您在类中列出了两个反斜杠,那么它将是“字符是一个反斜杠还是一个反斜杠?”。

以上是 在正则表达式中转义反斜杠[\\]的正确方法? 的全部内容, 来源链接: utcz.com/qa/434651.html

回到顶部