我在php中有一个正则表达式问题。

得到以下模式:^\s*(\d{8})\s+(.+?)\s+(\d+,\d{2})\s.?\s(.*)$

我的搜索字符串是这样的:

    12345678这是一个产品说明,带有一些特殊字符,例如®16,00€也许有些文本在这里

我使用以下php代码:

$regex = '/^\s*(\d{8})\s+(.+?)\s+(\d+,\d{2})\s.?\s(.*)$/';
echo preg_match($regex, $input);


但是没有比赛!

Java或C#中的相同正则表达式模式有效!你能解释我做错了什么吗?

这里是一些在线正则表达式测试器:

PHP:http://regexp-evaluator.de/evaluator/d721ca1ed32d76db960262ba7298cff3/#ergebnis

Java:http://www.regexplanet.com/advanced/java/index.html

最佳答案

您缺少/u修饰符。

查找价格值0,00之后,您的正则表达式将比较空格之间的单个字符(.?)。但是,欧元符号通常占用两个字节。这仅适用于UTF-8模式。

10-06 05:02
查看更多