我无法使 regex_replace 工作的 Prestashop
Prestashop I can't make regex_replace works
我的模板中有这个 regex_replace:
{$product.unit_price_full|regex_replace:"/^[\d\s]*,?\d{2}\s*[€$₪]*\s*/u":""}
$product.unit_price_full
returns 我的“1,12 $ L”和我的 regex_replace "/^[\d\s]*,?\d{2}\s*[€$₪]*\s*/" : " "
应该删除 "L" 之前的所有内容,但它仍然显示正则表达式无法正常工作的所有内容,但我在 regex101 上尝试它,它工作得很好。
如果我添加 unicode 标记,它只会删除美元符号,但不会删除其他任何内容
这是我得到的输出
1,00 2.21
所以我必须在我的正则表达式规则中捕获 space 标记?
我建议进行以下更改:
双引号字符串文字中的 $
用于插入字符串文字,如果需要使其成为文字 $
字符,则应使用单个反斜杠进行转义。否则,建议只使用单引号
- 由于模式中有超出 ASCII 范围的 Unicode 字符,因此将
u
修饰符传递给正则表达式,以便可以使用 PCRE 正确解析字符串模式和输入字符串。
使用
{$product.unit_price_full|regex_replace:'/^[\d\s]*,?\d{2}\s*[€$₪]*\s*/u':""}
我的模板中有这个 regex_replace:
{$product.unit_price_full|regex_replace:"/^[\d\s]*,?\d{2}\s*[€$₪]*\s*/u":""}
$product.unit_price_full
returns 我的“1,12 $ L”和我的 regex_replace "/^[\d\s]*,?\d{2}\s*[€$₪]*\s*/" : " "
应该删除 "L" 之前的所有内容,但它仍然显示正则表达式无法正常工作的所有内容,但我在 regex101 上尝试它,它工作得很好。
如果我添加 unicode 标记,它只会删除美元符号,但不会删除其他任何内容
这是我得到的输出
1,00 2.21
所以我必须在我的正则表达式规则中捕获 space 标记?
我建议进行以下更改:
-
双引号字符串文字中的
$
用于插入字符串文字,如果需要使其成为文字$
字符,则应使用单个反斜杠进行转义。否则,建议只使用单引号- 由于模式中有超出 ASCII 范围的 Unicode 字符,因此将
u
修饰符传递给正则表达式,以便可以使用 PCRE 正确解析字符串模式和输入字符串。
使用
{$product.unit_price_full|regex_replace:'/^[\d\s]*,?\d{2}\s*[€$₪]*\s*/u':""}