2011-08-25 71 views
0

在php中使用此正則表達式/^[\p{L}\p{N}. -/\\]+$/u時,出現'使用模式時出現內部錯誤'錯誤。它希望匹配的字符串能夠包含反斜槓。

+1

它看起來很奇怪。 – cweiske

+0

你想匹配什麼樣的模式? – Prisoner

+0

需要更多反斜槓。 '/'應該被轉義,並且\\如果被寫入PHP字符串中則是兩次。如果錯誤確實表示「內部錯誤」,則可能與您的PCRE_VERSION不兼容。 – mario

回答

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

所以,知道,當前的正則表達式編譯爲:

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

其轉義 「]」 字符,並打破了正則表達式。

此外,你的分隔符「/」和「 - 」應該在正則表達式中轉義。

修正版本:

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

您必須轉義類字符中的/ char或使用除/之外的其他分隔符。

也可以跳過-或將它放在char類的開始或結束處。

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

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

大括號({})用於設置模式的出現次數。內括號應該是整數。另外,\p不是有效模式,您必須在正則表達式中使用\轉義\/

因此,如果您打算匹配\後跟p,那應該是\\p

而且,它完全讓我困惑,你爲什麼圍繞正則表達式有[]?它是否打算成爲一個角色組?如果是這樣,爲什麼你裏面有兩個{}呢?

那麼,你想與這種模式匹配的字符串是什麼?

0

我想你的模式應該是這樣的:在正則表達式模式

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

你忘了逃跑/和\字符,使用。

相關問題