preg_match():PHP Regex上的文本范围乱序

时间:2015-07-03 07:22:12

标签: java php regex

我想将java正则表达式转换为php正则表达式。但是我得到错误" - 文本范围乱序"

这是JAVA正则表达式

"[^\\u0020-\\u007F\u011f\u00fc\u015f\u00f6\u00e7\u011e\u00dc\u015e\u0130\u00d6\u00c7\u0131]";

这是PHP正则表达式

preg_replace("/[^\\x{0020}-\\x{007F}\\x{011f}\\x{00fc}\\x{015f}\\x{00f6}\\x{00e7}\\x{011e}\\x{00dc}\\x{015e}\\x{0130}\\x{00d6}\\x{00c7}\\x{0131}]/i","",".çşüiğıyuasdfaadsff");

我收到以下错误" - 文字范围乱序"

任何帮助?

1 个答案:

答案 0 :(得分:2)

默认情况下,正则表达式引擎将输入字符串和正则表达式解释为PHP中的字节数组。您应该收到关于字符值太大的错误,因为\x{011f}\x{011e}大于255(一个字节的最大值)。

要匹配Unicode代码点而不是任意字节序列,请使用u标志打开UTF模式。

$re = '~[^\x{0020}-\x{007F}\x{011f}\x{00fc}\x{015f}\x{00f6}\x{00e7}\x{011e}\x{00dc}\x{015e}\x{0130}\x{00d6}\x{00c7}\x{0131}]~u';

RegEx Demo