在数字之前插入£

时间:2013-11-29 14:57:31

标签: php regex

这整个问题已经出现,因为我们的数据输入人员毫无用处。我们有一个表单用于向数据库添加项目,其中一个字段是价格。格式类似于lowest - highest (lowest without 10% fee - highest without 10% fee),例如11 - 22 (10 - 20)

问题是人们添加这些数据真的与添加英镑符号不一致,所以有些像11-£22(£10-20),所以我的想法是当我带回数据时,删除那里的任何英镑符号,并重新添加它们,所以它们看起来都一样。

我猜这样做我需要某种RegEx来匹配某些东西,但我不确定它的模式是什么。

任何人都可以帮我弄清楚我需要使用哪种RegEx吗?

3 个答案:

答案 0 :(得分:2)

如果你的正则表达式支持外观,你可以使用表达式:

£?(?<!\d)(\d+)

并使用以下作为替代:

£\1

这在PHP中应该可以正常工作

如果您希望价格包含逗号和句号

,也可以使用此表达式
£?(?<![0-9,.])(\d+)

答案 1 :(得分:0)

更简单的解决方案是提供带有货币符号列表的下拉列表。这样,符号的添加对用户来说是显而易见的。

您仍然可以添加表达式,可以替换所有非数字字符并允许单个dot字符和许多commas

您也可以使用javascript来限制输入的字符,但无论如何都要提供服务器端验证/修改。

答案 2 :(得分:0)

你可以这样做:

$result = preg_replace('~£?(\d+)~', '£$1', '11-£22(£10-20)');