繁体   English   中英

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

[英]what's wrong with this regex /^[\p{L}\p{N}. -/\\]+$/u

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

您必须在类字符中转义/ char或使用/以外的其他定界符。

也可以对-转义,或者将其放在char类的开头或结尾。

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

#^[\p{L}\p{N}. /\\-]+$#u
$str = '\\';    // = \
$str = '\\\\';  // = \\ (this is what you need for your regex)

因此,知道了,您当前的正则表达式将编译为:

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

转义“]”字符并中断正则表达式。

同样,您的分隔符“ /”和“-”也应在正则表达式内转义。

更正的版本:

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

我想您的模式应如下所示:

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

您忘记使用正则表达式模式转义/和\\字符。

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

因此,如果要匹配\\后跟p ,则应该为\\\\p

而且,这完全使我感到困惑,为什么您在正则表达式中有[] 是否打算成为角色组? 如果是这样,为什么里面有两个{}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM