在php中使用此正则表达式/^[\p{L}\p{N}. -/\\]+$/u
时,我在使用模式时出现“内部错误”错误。它希望匹配的字符串能够包含反斜杠。
答案 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
。
并且,它完全让我感到困惑,你为什么围绕正则表达式[]
?它是否打算成为一个角色组?如果是这样,为什么你里面有两个{}
?
那么,您希望与此模式匹配的字符串是什么?