这个正则表达式有什么问题/ ^ [\ p {L} \ p {N}。 - / \\] + $ / U

时间:2011-08-25 09:59:51

标签: php regex

在php中使用此正则表达式/^[\p{L}\p{N}. -/\\]+$/u时,我在使用模式时出现“内部错误”错误。它希望匹配的字符串能够包含反斜杠。

4 个答案:

答案 0 :(得分:3)

您必须转义类字符中的/字符或使用除/之外的其他分隔符。

同时逃离-或将其放在char类的开头或结尾。

/^[\p{L}\p{N}. \-\/\\]+$/u

#^[\p{L}\p{N}. /\\-]+$#u

答案 1 :(得分:2)

$str = '\\';    // = \
$str = '\\\\';  // = \\ (this is what you need for your regex)

所以,知道这一点,你当前的正则表达式编译为:

/^[\p{L}\p{N}. -/\]+$/u

它会转义“]”字符并打破正则表达式。

此外,您的分隔符字符“/”和“ - ”也应该在正则表达式中进行转义。

更正版本:

$regex = '/^[\p{L}\p{N}. \\-\\/\\\\]+$/u';

答案 2 :(得分:0)

我想你的模式应该是这样的:

/^[\p{L}\p{N}. -\/\\\]+$/u

您忘记使用。

以正则表达式模式转义/和\字符

答案 3 :(得分:-1)

大括号({})用于设置模式的出现次数。内括号应该是整数。此外,\p不是有效模式,您必须在正则表达式中使用\转义/\

因此,如果您打算匹配\后跟p,则应为\\p

并且,它完全让我感到困惑,你为什么围绕正则表达式[]?它是否打算成为一个角色组?如果是这样,为什么你里面有两个{}

那么,您希望与此模式匹配的字符串是什么?