这整个问题已经出现,因为我们的数据输入人员毫无用处。我们有一个表单用于向数据库添加项目,其中一个字段是价格。格式类似于lowest - highest (lowest without 10% fee - highest without 10% fee)
,例如11 - 22 (10 - 20)
问题是人们添加这些数据真的与添加英镑符号不一致,所以有些像11-£22(£10-20)
,所以我的想法是当我带回数据时,删除那里的任何英镑符号,并重新添加它们,所以它们看起来都一样。
我猜这样做我需要某种RegEx来匹配某些东西,但我不确定它的模式是什么。
任何人都可以帮我弄清楚我需要使用哪种RegEx吗?
答案 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)');